持久的后台任务Django + Heroku

时间:2015-01-23 21:46:18

标签: python django heroku background cron

我的ubuntu服务器上有一个持久的后台进程当前作为独立的python脚本运行,由supervisor管理。但是,我正在迁移到Heroku并想知道是否有人有任何建立相同环境的经验。

脚本的规格;

  1. 从外部API获取信息
  2. 对数据进行计算
  3. 将数据存储到数据库
  4. 如果脚本使用的时间少于5秒,则在剩余时间内休眠,否则再次运行
  5. 我可以每隔5秒运行一次cronjob,但有时候步骤1-3可能需要一整个小时。 有什么提示吗?

    感谢。

1 个答案:

答案 0 :(得分:2)

您要做的是创建一个工作进程。只需定义一个命令行脚本,以便您可以轻松调用它,然后在Procfile中添加一个新的工作条目,如下所示:

# Procfile
web: python manage.py runserver # example
worker: python manage.py start_cronjob # command to run your background process

一旦您在Procfile中定义了此内容,请继续将您的应用推送到Heroku,然后扩展工作流程:

$ heroku scale worker=1

这将启动单个工作进程。

要查看日志并确保按预期工作,您可以说:

$ heroku logs --tail --ps worker