【发布时间】:2020-11-25 17:51:25
【问题描述】:
我的 scrapy 项目中有几个蜘蛛。他们每个人都从各种网站收集数据并将其存储在数据库中(单独)。在每个蜘蛛完成后,我需要运行对数据进行处理的代码(我们称之为数据处理子程序)。这需要不同的时间(最多一个小时),具体取决于蜘蛛/数据。
我的目标是有一个脚本可以同时运行这些蜘蛛,并允许在爬行完成后触发每个蜘蛛的数据处理子例程,同时不干扰其他仍在运行的蜘蛛和其他完成的蜘蛛的数据处理子例程.换句话说,我想在最短的时间内完成。
我知道我可以通过这种方式同时运行蜘蛛:
https://docs.scrapy.org/en/latest/topics/practices.html#running-multiple-spiders-in-the-same-process
我也知道/认为我可以在每个蜘蛛内部使用 spider_close 信号来触发数据处理子程序。
我的问题是:
- 这会像我想象的那样工作吗?数据处理子程序不会因为都在同一个进程中而竞争资源吗?
- 有没有办法使用实际的多处理并在单独的进程中运行每个蜘蛛?或者其他更好的方法来做到这一点?
谢谢。
【问题讨论】:
标签: python scrapy multiprocessing