芹菜块和组

时间:2019-02-15 09:09:33

标签: python python-3.x celery celery-task

我有8023个要解析的ID。为了异步解析这些,我有一个称为解析器的队列。最初,我是这样将ID传递给队列的

    jobs = group(parse.s(item.id) for item in products)
    jobs.apply_async()

但是,当我这样做时,apply_aync有时会花费很长的时间(> 10分钟),并且我的主要过程陷入了困境。经过一番调查,我遇到了很多问题。我实现了如下

parser_param = [item.id for item in products]
parse.chunks(iter(parser_param), 100).apply_async(queue='parser')

但这只会向队列解析器添加81个任务。当我从该队列中检索到一条消息时,我发现基本上它已将ID列表拆分为较小的列表,每个ID包含100个ID,并将该较小的列表传递给解析器。解析器任务只需要一个参数(id)而不是列表,因此我得到TypeError

0 个答案:

没有答案