在heroku上运行Django后台任务

时间:2020-09-18 11:24:19

标签: python django heroku

因此,我有一个Django项目,该项目具有要运行的方法的后台任务。 我对procfile进行了以下调整 最初

web: python manage.py collectstatic --no-input; gunicorn project.wsgi --log-file - --log-level debug

现在

web: python manage.py collectstatic --no-input; gunicorn project.wsgi --log-file - --log-level debug
worker: python manage.py process_tasks

尽管添加了worker,但是当我在heroku上部署项目时,它不会运行后台任务。后台任务已创建,可以在django admin中注册,但无法运行。我希望在阅读了多篇文章(其中一篇为https://medium.com/@201651034/background-tasks-in-django-and-heroku-58ac91bc881c)后添加了worker:python mnanage.py process_tasks可以完成工作,但没有。

如果我在heroku cli中执行:heroku运行python manage.py process_tasks,它将仅在最初存在于数据库中的数据上运行,而不在部署后添加的任何新数据上运行。

注意:我使用python manage.py process_tasks来使后台任务在本地服务器上运行。

因此,如果有人可以帮助我在heroku上部署后运行后台任务。

1 个答案:

答案 0 :(得分:1)

您的 Procfile 似乎是正确的,您需要使用来自 heroku CLI 的 heroku scale worker=1 来扩展您的工作程序 dyno,或者您也可以从 heroku 仪表板扩展您的工作程序 dyno。

用于通过浏览器扩展工作器动态:-

  1. 访问https://dashboard.heroku.com/apps/<your-app-name>/resources
  2. 编辑您的工作人员动态并从那里扩展,确认您的更改

在 CLI 中使用命令 heroku logs -t -p worker 查看 worker dyno 的状态和日志