Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 被Django包裹的蜘蛛卡住了怎么停止?_Python_Django_Scrapy_Python Billiard - Fatal编程技术网

Python 被Django包裹的蜘蛛卡住了怎么停止?

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

我有一个Scrapy spider包在Django中,要以编程方式启动它,我使用scrapyscript,它使用台球队列和进程来运行Scrapy。我知道这是一个奇怪的设置,但我需要一个可以由cron运行并使用django-orm的spider。而且,一切都很好,我的数据被刮去了,我可以用编程的方式运行它,但有一件事很糟糕:爬行器卡住了,代码执行会永远等待

# 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库中传递结果时,队列被卡住。所以,最初我评论了这个部分,但这导致了一些其他问题,然后我决定采用完全不同的解决方案。