我想在芹菜中使用多个工人来遍历一个列表

时间:2014-08-06 08:31:45

标签: python celery celery-task

我有一个清单:

 url_list=["abc.com","def.com","xyz.com"."pqr.com"...] - 100,000 entries

我想使用100名芹菜工人遍历这份清单,以减少完成工作所需的时间。

我的问题是:我如何向工人提供这个url_list,以便这100名芹菜工人一次性地在url_list上射击,而不会触及列表的元素,这已经是其他一些工人遍历了什么?

我已经创建了一个目录, proj-> celery.py,tasks.py

据我所知,我将在 tasks.py 文件中提及我的任务,并使用python shell中的.delay函数调用该任务。 celery.py 将包含配置内容。

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

换句话说,你有100个进程接收他们共享状态所需的相同列表(节点访问True / False)

您需要以某种方式在进程之间进行通信,这意味着任务需要与运行任务的其他工作者共享对象。

IMO这不是非常有效,可能会给你带来麻烦并产生错误,也许map / reduce方法会更容易,这意味着在调用任务之前,你将每个工作者将获得的列表部分分开。

您不需要分开100个作业,您可以将10个条目列表中的100k条目列表分开,这样每个工作人员一次可以处理10个条目,一旦完成它将从下一个批次中获取队列