python django heroku celery

heroku web python



No se puede importar el nombre_uuid_generate_random en heroku django (3)

Estoy trabajando en un proyecto que escanea la bandeja de entrada de gmail del usuario y proporciona un informe. Lo he desplegado en heroku con las siguientes especificaciones:

Lenguaje: Python 2.7

Marco: Django 1.8

Programador de tareas: apio ( Rabbitmq-bigwig para la url del corredor)

Ahora, cuando Heroku lo ejecuta, el apio no me da la salida. En Heroku, presione su error de configuración Collectstatic . He intentado usar el paquete whitenoise

También intenté ejecutar: heroku run python manage.py collectstatic --dry-run --noinput Todavía obteniendo el mismo error.

$ heroku ejecuta python manage.py collectstatic --noinput dio los siguientes detalles del error.

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

También intenté revertir el compromiso de heroku con el compromiso de trabajo anterior y cloné ese código, pero en el siguiente compromiso (cambios: eliminó una imagen de medios de la carpeta de medios) muestra el mismo error nuevamente.

Gracias por adelantado


Sí, el problema mencionado por Alasdair fue el responsable del error. Resolví el problema en mi proyecto siguiendo este flujo de trabajo para mantener solo los requisitos esenciales -to-freeze.txt donde enumero Celery, pero no sus dependencias como Kombu.

Luego, es suficiente para actualizar los paquetes esenciales y luego volver a congelar la lista completa de dependencias con la versión funcional de Kombu.

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

Y pruebe cosas para asegurarse de que la actualización no haya roto otra cosa;)


Si bien actualizar kombu es la opción ideal, si está atascado con dependencias más antiguas que no lo permiten, colocar esto en la parte superior de mi settings.py funcionó para mí:

import uuid uuid._uuid_generate_random = None

Esto funciona porque _uuid_generate_random se eliminó here , y esto simplemente restaura el valor predeterminado. Este truco parece razonable, ya que Kombu solo verifica esto para evitar un error resuelto en 2007 , y si necesita esta solución debido a una actualización reciente de Python, inherentemente no se ve afectado :)


Te encuentras con este problema , que afecta a Python 2.7.11 (Celery requiere Kombu).

El problema se soluciona en Kombu 3.0.30.