Паук, завернутый в Django застревает, как остановить? - PullRequest
0 голосов
/ 06 января 2020

У меня есть паук Scrapy, завернутый в Django, и для его программного запуска я использую scrapyscript, который использует бильярдные очереди и процессы для запуска Scrapy. Я знаю, что это странная настройка, но мне нужен паук, который может запускаться cron и работать с django orm. Кроме того, все работает отлично, я получаю данные, очищенные, я могу запустить их программно, но одно отстой: паук застревает и выполнение кода ждет вечно.

# start.py
cmd = ['C:\\PycharmProjects\\...\\start.bat', ]
subprocess.call(cmd)

# start.bat
python C:\\...\\manage.py runserver --noreload

# urls.py
from my_app.myFile import MyClass
c = MyClass()

# myFile.py
class MyClass(object):

    def __init__(self):
        githubJob = Job(ScrapOnePage, url='some/url')
        processor = Processor(settings=None)
        data = processor.run(githubJob)
        print(data)

ScrapOnePage работает отлично, нет необходимости покажи это, это делает работу. Проблема в процессоре, почему-то после произнесения «паук закрыт» не пропускает go и не переходит на другую строку. Печать (данные) никогда не происходит, независимо от того, как долго я жду. Это то, что висит навсегда:

2020-01-05 22:27:29 [scrapy.core.engine] INFO: Closing spider (finished)
2020-01-05 22:27:29 [scrapy.statscollectors] INFO: Dumping Scrapy stats:
{'downloader/request_bytes': 1805,
 'downloader/request_count': 4,
 'downloader/request_method_count/GET': 4,
 'downloader/response_bytes': 5933,
 'downloader/response_count': 4,
 'downloader/response_status_count/200': 1,
 'downloader/response_status_count/301': 3,
 'finish_reason': 'finished',
 'finish_time': datetime.datetime(2020, 1, 5, 21, 27, 29, 253634),
 'log_count/DEBUG': 5,
 'log_count/ERROR': 1,
 'log_count/INFO': 7,
 'response_received_count': 1,
 'scheduler/dequeued': 4,
 'scheduler/dequeued/memory': 4,
 'scheduler/enqueued': 4,
 'scheduler/enqueued/memory': 4,
 'spider_exceptions/IndexError': 1,
 'start_time': datetime.datetime(2020, 1, 5, 21, 27, 28, 275290)}
2020-01-05 22:27:29 [scrapy.core.engine] INFO: Spider closed (finished)

Как уже говорилось, работа выполнена, и я могу поместить в процесс несколько пауков, и все они работают нормально. Но процесс никогда не останавливается. Я мог убить сервер django с помощью kill pid, но мне очень не понравилось это решение (также потому, что я не уверен, что оно убивает также паука, бегущего внутри django).

Пожалуйста, любое улучшение, более простой подход, любые намеки, как заставить паука позволить go? Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...