Django与芹菜接口的作业队列
我的django web应用程序逻辑主要面向后台任务执行(周期性和独立性、同步和异步)。所有的研究似乎都表明使用芹菜是最受推荐的方法。我计划最终部署在Heroku上,它支持芹菜+Redis(我在本地开发中使用的)这一事实对我来说是一个很大的好处 然而,我需要比芹菜提供更广泛的调度能力。我需要一些定期任务来运行计划,如“在每月最后一个太阳运行”等。因此,我在django中实现了自己的模型,以存储定期规则和其他所需参数 现在我被如何把我的桌子和芹菜连接起来的问题难倒了。理想情况下,我想做的是拥有自己的作业模型,其中包含计划、任务到期时应运行的任务以及任务的参数。类似于C++中的函数PTR。然后,我将运行一个守护进程,该守护进程将不断检查作业已到期的作业队列,如果它定期创建下一个作业实例并将其推入队列,则使用celery的延迟方法或类似方法运行带有参数的相关任务 问题:Django与芹菜接口的作业队列,django,scheduled-tasks,celery,Django,Scheduled Tasks,Celery,我的django web应用程序逻辑主要面向后台任务执行(周期性和独立性、同步和异步)。所有的研究似乎都表明使用芹菜是最受推荐的方法。我计划最终部署在Heroku上,它支持芹菜+Redis(我在本地开发中使用的)这一事实对我来说是一个很大的好处 然而,我需要比芹菜提供更广泛的调度能力。我需要一些定期任务来运行计划,如“在每月最后一个太阳运行”等。因此,我在django中实现了自己的模型,以存储定期规则和其他所需参数 现在我被如何把我的桌子和芹菜连接起来的问题难倒了。理想情况下,我想做的是拥有自己
感谢堆..芹菜中的定期任务与此类似。有一个专用的调度程序进程(
芹菜节拍
),它只在任务到期时发送任务
您还可以通过子类化celery.beat.Scheduler
类来创建新的调度程序以与beat
一起使用,并且您也可以通过子类化celery.schedules.schedule
来创建自定义调度程序(如已内置的crontab
调度程序)
django芹菜扩展(django芹菜.schedulers.DatabaseScheduler
)中有一个数据库支持的调度器实现,它使用了许多技巧来避免对数据库进行过于频繁的轮询等等(遗憾的是,它没有得到很好的注释)
调度程序:
时间表:
数据库调度程序: