0

我每天早上在一个任务中使用django-post_office发送 c.10,000 封电子邮件。

send_queued(processes=1, log_level=None)可以通过celery 任务中的函数来执行此操作。

我知道并发运行 celery 是最佳实践,例如celery -A settings worker -l info --concurrency 6

processes国旗和django-post_office这个一样吗?例如,如果我正在运行6并发 celery 进程,我是否应该将此标志也设置为6

如果不是,这两者有什么区别?

4

1 回答 1

1

send_queued(processes=6)将要发送的电子邮件数量分成 6 个组,并在使用multiprocess.Pool.

celery --concurrency 6将运行 6 个 celery 进程。每个进程一次将能够处理一项任务。它不会影响您的电子邮件的发送方式,因为send_queud()是在一个 celery 进程中执行的一条指令。但是,如果您有多个 celery 任务(执行send_queued()或不执行)同时排队,这些任务将能够同时运行(最多 6 个),而不是等待之前的任务终止后再运行另一个。

换句话说process,argument ofsend_queued()--concurrencyargument ofcelery是完全不相关的。

于 2020-11-15T23:03:50.533 回答