代码之家  ›  专栏  ›  技术社区  ›  alias51

进程是否与django-post_office中的并发相同?

  •  0
  • alias51  · 技术社区  · 5 年前

    我正在使用 django-post_office 每天早上在一个任务中发送大约10000封电子邮件。

    可以通过函数来实现 send_queued(processes=1, log_level=None) 在芹菜任务中。

    我理解以并发方式运行celebre是最佳实践,例如。 celery -A settings worker -l info --concurrency 6

    这是 processes 旗在 django-post_office 与此相同?例如,如果我在跑步 6 并发芹菜进程是否也应该将此标志设置为 6. ?

    如果没有,两者之间有什么区别?

    0 回复  |  直到 5 年前
        1
  •  1
  •   Antoine Pinsard PM 2Ring    5 年前

    send_queued(processes=6) 将要发送的电子邮件数量分成6组,并在一个过程中独立处理每组,使用 multiprocess.Pool .

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

    换句话说 process 论点 send_queued() --concurrency 论点 celery 它们完全无关。