Python 被Django包裹的蜘蛛卡住了怎么停止?
我有一个Scrapy spider包在Django中,要以编程方式启动它,我使用scrapyscript,它使用台球队列和进程来运行Scrapy。我知道这是一个奇怪的设置,但我需要一个可以由cron运行并使用django-orm的spider。而且,一切都很好,我的数据被刮去了,我可以用编程的方式运行它,但有一件事很糟糕:爬行器卡住了,代码执行会永远等待Python 被Django包裹的蜘蛛卡住了怎么停止?,python,django,scrapy,python-billiard,Python,Django,Scrapy,Python Billiard,我有一个Scrapy spider包在Django中,要以编程方式启动它,我使用scrapyscript,它使用台球队列和进程来运行Scrapy。我知道这是一个奇怪的设置,但我需要一个可以由cron运行并使用django-orm的spider。而且,一切都很好,我的数据被刮去了,我可以用编程的方式运行它,但有一件事很糟糕:爬行器卡住了,代码执行会永远等待 # start.py cmd = ['C:\\PycharmProjects\\...\\start.bat', ] subprocess.c
# 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很好,无需显示,它就可以完成任务。问题是处理器,不知何故,在说了“蜘蛛关闭”之后,它没有松手,也没有;Don’别再接下去了。打印(数据)永远不会发生,无论我等待多久。这就是永远存在的东西:
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)
如前所述,这项工作已经完成,我可以将多个爬行器放入这个过程中,它们都工作得很好。但这一过程从未停止过。我可以通过killpid杀死django服务器,但我非常不喜欢这个解决方案(还因为我不确定它是否也杀死了在django内部运行的spider)
请问,有什么改进,更简单的方法,如何让蜘蛛放手的提示吗?提前谢谢。您试过调试它吗?是的,我试过了。由于某种原因,在scarpyscript库中传递结果时,队列被卡住。所以,最初我评论了这个部分,但这导致了一些其他问题,然后我决定采用完全不同的解决方案。