我必须在管道中进行API调用。由于管道同步运行,这些API请求正在减慢到无法忍受的程度(比如2项/分钟 - 通常我每项需要做20多个请求)。
通常,对于像这样的IO绑定任务,我会诉诸concurrent.futures
:
import concurrent.futures
with concurrent.futures.ThreadPoolExecutor(max_workers=8) as executor:
executor.submit(func, args) # ...
不幸的是,因为Scrapy是建立在Twisted之上的,所以不起作用。扭曲的等价物是什么?我找到reactor.callInThread
但不明白如何将其映射到上述解决方案。