芹菜的工作流程

时间:2014-09-24 06:37:35

标签: django celery django-celery

我是django的初学者,我安装了芹菜。

如果同步或异步处理排队的工作,我对芹菜的工作感到困惑。当已经处理排队的工作时,其他工作是否可以排队?

2 个答案:

答案 0 :(得分:2)

Celery是一个任务排队系统,由消息排队系统支持,Celery允许您以异步方式调用任务,不会阻止您完成任务的过程,您可以等待任务完成AsyncResult.get

在处理任务时,其他任务可以排队,如果Celery运行多个进程/线程(这是默认情况),任务将彼此并行执行。

您有责任确保以正确的顺序执行相关任务,例如如果任务A的输出是其他任务B的输入,那么您应该确保在开始任务A之前从任务B获得结果

从Celery文档中阅读Avoid launching synchronous subtasks

答案 1 :(得分:1)

我认为你对芹菜的做法可能有点困惑。

Celery根本不负责排队。这由队列本身 - RabbitMQ,Redis或其他什么来处理。 Celery参与此过程的唯一方法是作为一个库,您可以在应用程序内部调用以将任务序列化为适合放入队列的任务。由于这是由您的Web应用程序完成的,它与您的应用程序本身完全同步或异步:通常,在生产中,您有多个进程运行您的站点,每个进程可以同时将事物放入队列,但每个排队行动在进行中完成。

Celery的要点是单独的工作流程。这是异步位的来源:工作者完全独立于Web应用程序运行,并根据需要从队列中选择任务。它们根本不参与将任务放入队列的过程。