developer tip

heroku django에서 _uuid_generate_random 이름을 가져올 수 없습니다.

copycodes 2021. 1. 5. 08:12
반응형

heroku django에서 _uuid_generate_random 이름을 가져올 수 없습니다.


사용자 Gmail받은 편지함을 스캔하고 보고서를 제공하는 프로젝트를 진행 중입니다. 다음 사양 으로 heroku에 배포했습니다 .

언어 : Python 2.7

프레임 워크 : Django 1.8

작업 스케줄러 : Celery ( 브로커 URL 용 Rabbitmq-bigwig )

이제 heroku가 실행하면 셀러리가 나에게 출력을주지 않습니다. Heroku에서는 Collectstatic 구성 오류를 표시 합니다 . 나는 whitenoise 패키지를 사용해 보았습니다

또한 실행을 시도했습니다. heroku run python manage.py collectstatic --dry-run --noinput 여전히 동일한 오류가 발생합니다.

$ heroku run 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 커밋을 이전 작업 커밋으로 롤백하고 해당 코드를 복제하려고 시도했지만 다음 커밋 (변경 : 미디어 폴더에서 미디어 이미지 제거)에서 동일한 오류를 다시 표시합니다.

미리 감사드립니다


당신은 건너오고 이 문제 (다시마는 셀러리에 필요한) 파이썬 2.7.11에 영향을 미칩니다.

이 문제는 Kombu 3.0.30에서 수정되었습니다.


kombu를 업그레이드하는 것이 이상적인 옵션이지만이를 허용하지 않는 이전 종속성으로 고착 된 경우 내 settings.py 상단에 배치하면 저에게 효과적이었습니다.

import uuid
uuid._uuid_generate_random = None

이것은 _uuid_generate_random이 여기서 제거 되었기 때문에 작동 하며 이것은 단순히 기본값을 복원합니다. 이 해킹은 Kombu 가 2007 년에 해결 된 버그를 해결 하기 위해서만 이것을 확인하기 때문에 합리적으로 보입니다 . 그리고 최근 Python 업데이트로 인해이 수정이 필요한 경우 본질적으로 영향을받지 않습니다. :)


예, Alasdair가 언급 한 문제가 오류의 원인이었습니다. 이 워크 플로따라 Celery를 나열 하는 필수 요구 사항 -to-freeze.txt 만 유지 하고 Kombu와 같은 종속성은 유지하지 않음 으로써 프로젝트의 문제를 해결했습니다 .

그런 다음 필수 패키지를 업그레이드 한 다음 작동중인 Kombu 버전으로 전체 종속성 목록을 다시 고정하는 것으로 충분합니다.

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

그리고 업그레이드가 다른 것을 깨뜨리지 않았는지 테스트하십시오.)

ReferenceURL : https://stackoverflow.com/questions/34198538/cannot-import-name-uuid-generate-random-in-heroku-django

반응형