将芹菜与已经存在的MySQL表一起使用,而不是使用Broker,这可能吗?

Dhr*_*hak 5 python celery

手头的任务:

有一个MySQL表,其中将用户活动推入一行。该活动需要稍后处理。

id    |  activity_type  |  activity_data | creation_time | status
23          EMAIL          {....... }       2013-02-01     UNPROCESSED
Run Code Online (Sandbox Code Playgroud)

没有芹菜的加工:

  • 使用一个脚本来拾取N条记录以进行处理,处理,然后将已处理记录的状态更新为“已处理”。

使用Celery如何实现相同的功能,我想使用相同的功能标记任务而不是使用代理?即任务添加->接受10条最旧的行添加到状态为UNPROCESSED的mysql表中,该行也具有与任务相关的数据。

在任务完成时->将行标记为PROCESSED。

如何得知celery而不是将任务推送到代理上,而必须从MySQL表中检索任务?

我是Celery的初学者,因此不了解其所有功能。不建议使用MySQL作为代理,但我想知道可行性。

Aya*_*Aya 5

我认为你误解了芹菜的工作原理。您不能只是用您自己设计的 MySQL 表替换它的代理 - 嗯,除非对其源代码进行重大更改。

代理是 celery 的内部部分,它使用自己的内部格式来跟踪其任务,因此仅使用 MySQL 代理并没有固有的优势,因为这是您当前存储执行任务所需信息的方式。任务。

如果您愿意,您仍然可以使用 celery,但您必须编写将用户活动表转换为 celery 任务所需的代码。

不过,我建议先尝试芹菜......

  1. 基本了解如何使用它
  2. 确定这是否是您想要实现的目标的良好解决方案

从celery 教程开始,看看它是如何发展的。