手头的任务:
有一个MySQL表,其中将用户活动推入一行。该活动需要稍后处理。
id | activity_type | activity_data | creation_time | status
23 EMAIL {....... } 2013-02-01 UNPROCESSED
Run Code Online (Sandbox Code Playgroud)
没有芹菜的加工:
使用Celery如何实现相同的功能,我想使用相同的功能标记任务而不是使用代理?即任务添加->接受10条最旧的行添加到状态为UNPROCESSED的mysql表中,该行也具有与任务相关的数据。
在任务完成时->将行标记为PROCESSED。
如何得知celery而不是将任务推送到代理上,而必须从MySQL表中检索任务?
我是Celery的初学者,因此不了解其所有功能。不建议使用MySQL作为代理,但我想知道可行性。
我认为你误解了芹菜的工作原理。您不能只是用您自己设计的 MySQL 表替换它的代理 - 嗯,除非对其源代码进行重大更改。
代理是 celery 的内部部分,它使用自己的内部格式来跟踪其任务,因此仅使用 MySQL 代理并没有固有的优势,因为这是您当前存储执行任务所需信息的方式。任务。
如果您愿意,您仍然可以使用 celery,但您必须编写将用户活动表转换为 celery 任务所需的代码。
不过,我建议先尝试芹菜......
从celery 教程开始,看看它是如何发展的。