使用芹菜已经存在的MySQL表而不是代理,是否可能?

时间:2013-03-29 07:27:18

标签: python celery

手头的任务:

有一个MySQL表,用户活动作为一行被推送。该活动需要稍后处理。

id    |  activity_type  |  activity_data | creation_time | status
23          EMAIL          {....... }       2013-02-01     UNPROCESSED

没有芹菜的处理:

  • 使用一个脚本来获取N个记录进行处理,处理它们,然后将处理记录的状态更新为PROCESSED。

如何使用Celery实现同样的目标,我想使用相同的功能来标记任务而不是使用代理? 即任务添加 - >将10个最旧的行添加到状态为UNPROCESSED的mysql表中,该行还包含与任务相关的数据。

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

如何告诉芹菜不是将任务推送到代理,它必须从MySQL表中检索任务?

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

1 个答案:

答案 0 :(得分:4)

我认为你误解了芹菜的作用方式。你不能只用你自己设计的MySQL表替换它的代理 - 好吧,不是没有对它的源代码进行实质性的改变。

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

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

但是,我建议先尝试芹菜......

  1. 基本了解如何使用它
  2. 确定它是否是您正在努力实现的目标的理想解决方案
  3. celery tutorial开始,看看它是如何发生的。