如何使用Heroku和Django实现简单的cron作业

时间:2014-01-19 06:05:43

标签: django heroku cron

我在Heroku上运行了一个Django应用程序并使用了Heroku Postgres数据库。这是非常低的流量,我想保持每月的成本尽可能低(现在,它是免费运行Heroku的750免费小时/月)。我有一些简单的cron作业,实现为调用Django管理命令,我想运行,但我不知道如何使用Heroku执行此操作。我已经阅读了一些关于Scheduler的内容,但我仍然对一些事情感到困惑。首先,如果Scheduler在自包含的dyno上运行,它如何调用Django的manage.py文件?其次,调度程序任务通常会占用多少个dyno-hours?例如,如果任务只需要30秒就可以运行,我只需要30秒的使用费,或者是否有更多与旋转(然后向下)dyno相关的成本?

2 个答案:

答案 0 :(得分:1)

  

首先,如果Scheduler在自包含的dyno上运行,它如何调用Django的manage.py文件?

上传(推送)项目时,会将其编译为slug。这个slu is分发给运行你的web应用程序的每个dyno,以及每1个dyno。这意味着您运行的每个dyno上都会有manage.py的副本,可以通过调度程序或heroku run命令。


  

其次,调度程序任务通常会占用多少个dyno-hours?

     

计划程序附加组件会运行一次性dynos,这些dynos将计入您每个月将被收取的dyno-hours。


  

如果任务只需要30秒就可以运行,例如,我只需要30秒的使用费,或者是否有更多与旋转(然后向下)dyno相关的费用?

     

执行一次性dyno所花费的任何时间都将有助于使用,并且会像其他任何dyno一样收费。

这意味着对任务使用30秒需要30秒的dyno时间(REF)。我不相信你会为旋转/减速时间付费,但是你需要花费时间来加载你的应用程序以便它可以运行你的管理命令,所以尽量保持你的应用程序在提升时间方面尽可能轻。

答案 1 :(得分:1)

实际上,您可以尝试使用APScheduler

它甚至允许1分钟的任务,完全免费。

您只需要定义时钟过程并打开时钟。

您可以在page上看到分步教程。