我正在开发一个扫描用户gmail收件箱并提供报告的项目 . 我已经在 heroku 中部署了以下规范:
语言: Python 2.7
框架: Django 1.8
任务调度程序: Celery ( Rabbitmq-bigwig 代理代理网址)
现在当heroku执行它时,芹菜没有给我输出 . 在Heroku推动它显示 Collectstatic configuration error . 我试过用 whitenoise package
也尝试执行: heroku run python manage.py collectstatic --dry-run --noinput 仍然得到相同的错误 .
$ heroku运行python manage.py collectstatic --noinput给出了错误的以下细节 .
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 338, in execute_from_command_line
utility.execute()
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 303, in execute
settings.INSTALLED_APPS
File "/app/.heroku/python/lib/python2.7/site-packages/django/conf/__init__.py", line 48, in __getattr__
self._setup(name)
File "/app/.heroku/python/lib/python2.7/site-packages/django/conf/__init__.py", line 44, in _setup
self._wrapped = Settings(settings_module)
File "/app/.heroku/python/lib/python2.7/site-packages/django/conf/__init__.py", line 92, in __init__
mod = importlib.import_module(self.SETTINGS_MODULE)
File "/app/.heroku/python/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
File "/app/salesblocker/__init__.py", line 5, in <module>
from .celery import app as celery_app
File "/app/salesblocker/celery.py", line 5, in <module>
from celery import Celery
File "/app/.heroku/python/lib/python2.7/site-packages/celery/__init__.py", line 131, in <module>
from celery import five # noqa
File "/app/.heroku/python/lib/python2.7/site-packages/celery/five.py", line 153, in <module>
from kombu.utils.compat import OrderedDict # noqa
File "/app/.heroku/python/lib/python2.7/site-packages/kombu/utils/__init__.py", line 19, in <module>
from uuid import UUID, uuid4 as _uuid4, _uuid_generate_random
ImportError: cannot import name _uuid_generate_random
我还试图将heroku提交回滚到之前的工作提交并克隆该代码,但是在下次提交时(更改:从媒体文件夹中删除了媒体图像)它再次显示相同的错误 .
提前致谢
3 回答
您将遇到this issue,这会影响Python 2.7.11(Celery需要Kombu) .
该问题已在Kombu 3.0.30中修复 .
虽然升级kombu是理想的选择,但如果您遇到不允许这种情况的较旧的依赖项,那么将它置于我的settings.py顶部对我有用:
这是因为删除了_uuid_generate_random here,这只是恢复默认值 . 这个hack似乎是合理的,因为Kombu只检查到work around a bug resolved in 2007,如果你因为最近的Python更新需要这个修复,你本身就不会受到影响:)
是的,Alasdair提到的问题是造成错误的原因 . 我通过关注this workflow解决了我的项目中的问题,只保留了我列出Celery的基本要求到freeze.txt,但没有列出像Kombu这样的依赖项 .
然后,它足以升级必要的包,然后使用工作的Kombu版本重新冻结完整的依赖项列表 .
并测试一些东西,以确保升级没有破坏别的东西;)