手头的任务:
有一个MySQL表,用户活动作为一行被推送。该活动需要稍后处理。
id | activity_type | activity_data | creation_time | status
23 EMAIL {....... } 2013-02-01 UNPROCESSED
没有芹菜的处理:
如何使用Celery实现同样的目标,我想使用相同的功能来标记任务而不是使用代理? 即任务添加 - >将10个最旧的行添加到状态为UNPROCESSED的mysql表中,该行还包含与任务相关的数据。
任务完成 - >将行标记为PROCESSED。
如何告诉芹菜不是将任务推送到代理,它必须从MySQL表中检索任务?
我是Celery的初学者,因此不了解其所有功能。 不建议使用MySQL作为代理,但我想知道可行性。
答案 0 :(得分:4)
我认为你误解了芹菜的作用方式。你不能只用你自己设计的MySQL表替换它的代理 - 好吧,不是没有对它的源代码进行实质性的改变。
代理是celery的内部部分,它使用自己的内部格式来跟踪其任务,因此使用MySQL代理没有固有的优势,因为这是您当前存储必要信息的方式执行你的任务。
如果您愿意,您仍然可以使用芹菜,但是您必须编写将用户活动表转换为芹菜任务所需的代码。
但是,我建议先尝试芹菜......
从celery tutorial开始,看看它是如何发生的。