我在django项目中使用celery,我有一个芹菜计划任务,每分钟运行一次,如果有新任务要启动,则检查数据库内部,并且配置的任务还有一个时间开始和持续时间
这项定期任务的工作是:
但问题是:什么是最佳实践"监视周期性任务中启动的异步任务的状态?
我的意思是每次运行这个任务时,我都会从DB获取所有已配置的任务(启动,开始....)但我没有相关的芹菜任务ID,我应该存储芹菜db中的任务id,是否有与相关任务芹菜相关联的db任务?
django-celery可以帮助我吗?
感谢。
答案 0 :(得分:1)
Celery将使用结果后端自动跟踪状态。如果你想使用Django ORM存储这个状态,那么是的django-celery可以帮助你:
http://docs.celeryproject.org/en/latest/userguide/tasks.html#result-backends
http://docs.celeryproject.org/en/latest/configuration.html#task-result-backend-settings
Celery有一些功能可以帮助您停止超出持续时间的任务。
您可以使用配置来设置全局限制:
http://docs.celeryproject.org/en/latest/configuration.html#celeryd-task-time-limit
您可以使用装饰器参数设置每个任务类型的到期时间:
http://docs.celeryproject.org/en/latest/userguide/tasks.html#list-of-options
您可以设置每个计划实例的到期时间:
http://docs.celeryproject.org/en/latest/userguide/calling.html#expiration