持久化后台任务 Django + Heroku

Persistent background task Django + Heroku

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

脚本规范;

  1. 从外部获取信息API
  2. 对数据进行计算
  3. 将数据存入数据库
  4. 如果脚本使用时间少于 5 秒,则休眠剩余时间,否则再次运行

我可以 运行 每 5 秒执行一次 cronjob,但有时第 1-3 步可能需要整整一个小时。 有什么建议吗?

谢谢。

您想做的是创建一个工作进程。只需定义一个命令行脚本,以便您可以轻松调用它,然后在您的 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