Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.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
Python 如何将计划的操作排队_Python_Django_Heroku_Celery_Django Celery - Fatal编程技术网

Python 如何将计划的操作排队

Python 如何将计划的操作排队,python,django,heroku,celery,django-celery,Python,Django,Heroku,Celery,Django Celery,我正在尝试为heroku上托管的带有芹菜的Django应用程序设置一些预定任务。除了不知道应该如何配置所有内容外,最好的方法是什么 假设用户可以选择在自己选择的时间接收每日电子邮件 我是否应该有一个每5分钟运行一次的计划作业。查找当时希望收到电子邮件的每个用户,然后发送电子邮件 或 当每个用户设置其首选项时,为其安排任务。(还不确定我将如何实际实现这一点)这取决于您需要的准确度。是否希望用户选择最短为分钟的时间?第二或者允许他们选择发送电子邮件的时间就足够了 如果“按小时”足够准确,则使用每小时

我正在尝试为heroku上托管的带有芹菜的Django应用程序设置一些预定任务。除了不知道应该如何配置所有内容外,最好的方法是什么

假设用户可以选择在自己选择的时间接收每日电子邮件

我是否应该有一个每5分钟运行一次的计划作业。查找当时希望收到电子邮件的每个用户,然后发送电子邮件


当每个用户设置其首选项时,为其安排任务。(还不确定我将如何实际实现这一点)

这取决于您需要的准确度。是否希望用户选择最短为分钟的时间?第二或者允许他们选择发送电子邮件的时间就足够了

如果“按小时”足够准确,则使用每小时轮询用户邮件的任务

如果您的用户需要邮件准确地发送到第二秒,那么为每个用户设置一个任务,该任务在第二秒完成


介于两者之间的一切都取决于个人选择。您更喜欢做什么,更重要的是:什么以最少的故障模式生成最简单的代码?

我建议第一个选项(查找未完成作业的计划作业)-更易于扩展和管理。如果你有1000个用户,那就意味着发送电子邮件的任务太多了

如果您将数据库用作芹菜代理,则可以使用django芹菜内置的类似于cron的调度,这将允许您动态创建和销毁任务。不过,我不喜欢使用DB作为我的经纪人


另外,您可能想查看

谢谢,用户只需要选择15分钟的增量,所以我每15分钟启动一次查询,查找要发送电子邮件的用户,然后在芹菜上排队(至少我认为它是这样工作的!)您不需要将数据库用作代理。您可以有一个合适的代理,并且仍然使用数据库作为celerybeat的后端,允许您在管理界面中设置定时/cron任务。