Подтвердить что ты не робот

Невозможно импортировать имя _uuid_generate_random в heroku django

Я работаю над проектом, который сканирует почтовый ящик пользователя gmail и предоставляет отчет. Я развернул его в heroku со следующими спецификациями:

Язык: Python 2.7

Рамка: Django 1.8

Планировщик задач: Сельдерей ( Rabbitmq-bigwig для URL-адреса брокера)

Теперь, когда геройку исполняет его, сельдерей не дает мне выход. На Heroku нажмите на значок Ошибка конфигурации сборки. Я пробовал использовать пакет whitenoise

Также попытался выполнить: heroku запустить 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 на предыдущую рабочую фиксацию и клонировал этот код, но при следующем коммите (изменения: удалил медиа-образ из медиа-папки) его снова показывал ту же ошибку.

Заранее спасибо

4b9b3361

Ответ 1

Вы сталкиваетесь с этой проблемой, что влияет на Python 2.7.11 (Kombu требуется от Celery).

Проблема исправлена ​​в Kombu 3.0.30.

Ответ 2

В то время как модернизация kombu является идеальным вариантом, если вы застряли со старыми зависимостями, которые этого не позволяют, поместив это вверху моих настроек .py работал у меня:

import uuid
uuid._uuid_generate_random = None

Это работает, потому что _uuid_generate_random был удален здесь, и это просто восстанавливает значение по умолчанию. Этот взлом кажется разумным, поскольку Kombu проверяет это только на обход ошибки, устраненной в 2007 году, и если вам нужно это исправление из-за недавнего обновления Python, вы по своей сути не пострадали:)

Ответ 3

Да, проблема, о которой говорил Аласдейр, несет ответственность за ошибку. Я решил проблему в своем проекте, следуя этот рабочий процесс, чтобы сохранить только основные требования к freeze.txt, где я перечисляю Celery, но не его таких как Kombu.

Затем достаточно обновить необходимые пакеты, а затем снова заморозить полный список зависимостей с рабочей версией Kombu.

pip install --upgrade -r requirements-to-freeze.txt
pip freeze > requirements.txt

И проверьте все, чтобы обновление не сломало что-то еще;)