我有一个清单:
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 将包含配置内容。
有人可以帮助我吗?
答案 0 :(得分:0)
换句话说,你有100个进程接收他们共享状态所需的相同列表(节点访问True / False)
您需要以某种方式在进程之间进行通信,这意味着任务需要与运行任务的其他工作者共享对象。
IMO这不是非常有效,可能会给你带来麻烦并产生错误,也许map / reduce方法会更容易,这意味着在调用任务之前,你将每个工作者将获得的列表部分分开。
您不需要分开100个作业,您可以将10个条目列表中的100k条目列表分开,这样每个工作人员一次可以处理10个条目,一旦完成它将从下一个批次中获取队列