我有以下设置(码头工人):Scrapy和芹菜`update_state`
- 芹菜挂瓶安装运行于Scrapy蜘蛛
- 瓶设置(显然)
- 瓶设置获取请求Scrapy - >启动工人做一些工作
现在我想更新芹菜工人的进展原始瓶设置。 但是现在没有办法在刮刀内部使用celery.update_state()
,因为它无法访问原始任务(虽然它在芹菜任务中运行)。
顺便说一句:我错过了关于scrapy结构的一些事情吗?这似乎是合理的,我可以分配的__init__
内部参数能够使用furtheron,但scrapy使用方法,因为它似乎lambda函数..
要回答一些问题:
How are you using celery with scrapy?
Scrapy运行在芹菜任务的内部,而不是从命令行运行。我也从来没有听说过scrapyd
,这是scrapy的一个子项目吗?我使用远程工作者从celery/flask实例内部发起scrapy,因此它与原始请求所暗示的线程不同,它们是独立的docker实例。
task.update_state
很棒!在芹菜任务的内部,但只要我们在蜘蛛中,我们就不再有芹菜了。有任何想法吗?
从item_scraped信号问题Task.update_state(taskid,meta = {})。如果scrapy碰巧在Celery任务本身中运行(因为它默认为self),您也可以在没有taskid的情况下运行
这种类似于访问当前芹菜任务的静态方式吗?正如我所愿......
woah哥们,我确实解决了它。但感谢您的意见!最后,我以和你一样的方式处理它,尽管参与度较低 – WiseStrawberry