我的 ubuntu 服务器上有一个持久的后台进程,目前作为独立的 python 脚本运行,由 supervisor 管理。但是,我正在迁移到 Heroku 并想知道是否有人有设置相同类型环境的经验。
脚本规范;
- 从外部 API 获取信息
- 对数据进行计算
- 将数据存入数据库
- 如果脚本使用时间少于 5 秒,则在剩余时间内休眠,否则再次运行
我可以每 5 秒运行一次 cronjob,但有时第 1-3 步可能需要整整一个小时。 有什么建议吗?
谢谢。
请您参考如下方法:
您要做的是创建一个工作进程。只需定义一个命令行脚本,以便您可以轻松调用它,然后在您的 Procfile 中,添加一个新的 worker 条目,如下所示:
# 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
