当我从 github 自动部署时,Heroku 上的 Celery 无法正常关闭

Celery on Heroku doesn't shutdown properly when I automatically deploy from github

我遇到的问题是在 Heroku 的应用程序版本发布期间围绕 Celery 的重启过程。每次我将代码推送到我的产品 GitHub 时,它都会这样做:

2020-07-29T15:09:13.725295+00:00 app[worker.1]:   File "<frozen importlib._bootstrap_external>", line 846, in source_to_code
2020-07-29T15:09:13.725295+00:00 app[worker.1]:   File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
2020-07-29T15:09:13.725295+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python3.8/site-packages/celery/backends/redis.py", line 22
2020-07-29T15:09:13.725296+00:00 app[worker.1]:     from . import async, base
2020-07-29T15:09:13.725296+00:00 app[worker.1]:                   ^
2020-07-29T15:09:13.725296+00:00 app[worker.1]: SyntaxError: invalid syntax
2020-07-29T15:09:14.451767+00:00 heroku[worker.1]: Process exited with status 1
2020-07-29T15:09:14.516084+00:00 heroku[worker.1]: State changed from up to crashed

然后我不得不再次手动推送代码,芹菜工作得很好。这种情况每次都会发生。有没有办法阻止芹菜应用程序在另一个应用程序完成关闭之前尝试启动?

错误comes from a problem with celery<=4.2 and python>=3.7async 成为 python 3.7 中的关键字。

我不确定为什么这个错误对您来说是暂时的,但解决方案是 to specify a 3.6 python version 或升级到 celery>=4.3

回答关于dyno启动的问题: Heroku 所做的听起来 preboot 对您的应用程序有效。这种技术实际上可以减少部署新代码时的停机时间,但代价是新旧代码 运行 并排。您可以按照文章中的说明停用它。