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.