Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django与芹菜接口的作业队列_Django_Scheduled Tasks_Celery - Fatal编程技术网

Django与芹菜接口的作业队列

Django与芹菜接口的作业队列,django,scheduled-tasks,celery,Django,Scheduled Tasks,Celery,我的django web应用程序逻辑主要面向后台任务执行(周期性和独立性、同步和异步)。所有的研究似乎都表明使用芹菜是最受推荐的方法。我计划最终部署在Heroku上,它支持芹菜+Redis(我在本地开发中使用的)这一事实对我来说是一个很大的好处 然而,我需要比芹菜提供更广泛的调度能力。我需要一些定期任务来运行计划,如“在每月最后一个太阳运行”等。因此,我在django中实现了自己的模型,以存储定期规则和其他所需参数 现在我被如何把我的桌子和芹菜连接起来的问题难倒了。理想情况下,我想做的是拥有自己

我的django web应用程序逻辑主要面向后台任务执行(周期性和独立性、同步和异步)。所有的研究似乎都表明使用芹菜是最受推荐的方法。我计划最终部署在Heroku上,它支持芹菜+Redis(我在本地开发中使用的)这一事实对我来说是一个很大的好处

然而,我需要比芹菜提供更广泛的调度能力。我需要一些定期任务来运行计划,如“在每月最后一个太阳运行”等。因此,我在django中实现了自己的模型,以存储定期规则和其他所需参数

现在我被如何把我的桌子和芹菜连接起来的问题难倒了。理想情况下,我想做的是拥有自己的作业模型,其中包含计划、任务到期时应运行的任务以及任务的参数。类似于C++中的函数PTR。然后,我将运行一个守护进程,该守护进程将不断检查作业已到期的作业队列,如果它定期创建下一个作业实例并将其推入队列,则使用celery的延迟方法或类似方法运行带有参数的相关任务

问题:

  • 这种方法有意义吗
  • 如果没有,我可以使用什么其他替代方法
  • 如果是,我如何着手设计作业/事件队列
  • 我很想听到一个更好的方法来做这件事,或者如果有一个作业队列的现有实现可能是合适的,或者是一种使用芹菜的作业队列本身的方法


    感谢堆..

    芹菜中的定期任务与此类似。有一个专用的调度程序进程(
    芹菜节拍
    ),它只在任务到期时发送任务

    您还可以通过子类化
    celery.beat.Scheduler
    类来创建新的调度程序以与
    beat
    一起使用,并且您也可以通过子类化
    celery.schedules.schedule
    来创建自定义调度程序(如已内置的
    crontab
    调度程序)

    django芹菜扩展(
    django芹菜.schedulers.DatabaseScheduler
    )中有一个数据库支持的调度器实现,它使用了许多技巧来避免对数据库进行过于频繁的轮询等等(遗憾的是,它没有得到很好的注释)

    调度程序: 时间表: 数据库调度程序: