芹菜的工作流程



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

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

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

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

您有责任确保相关任务按正确顺序执行,例如,如果任务A的输出是另一个任务B的输入,则应确保在启动任务B之前从任务A获得结果。

请参阅Celery文档中的"避免启动同步子任务"。

我想你可能对Celery的功能有点困惑。

芹菜根本不负责排队。这是由队列本身处理的——RabbitMQ、Redis或其他什么。Celery在这方面参与的唯一方法是作为一个库,您可以在应用程序内部调用它,将任务序列化为适合放入队列的内容。由于这是由你的web应用程序完成的,它与你的应用程序本身完全同步或异步:通常,在生产中,你会有多个进程运行你的网站,每个进程都可以同时将东西放入队列,但每个排队操作都是在过程中完成的。

Celery的要点是独立的工作进程。这就是异步部分的来源:工作程序与您的web应用程序完全分开运行,并根据需要从队列中挑选任务。他们根本不参与将任务放入队列的过程。

相关内容

  • 没有找到相关文章

最新更新