[REDIS] 셀러리 작업을 설정하는 문제는 파이썬에서 백엔드
REDIS셀러리 작업을 설정하는 문제는 파이썬에서 백엔드
I는 주어진 모든 단계를 따라 [http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html] 이 코드입니다 :
from __future__ import absolute_import
from celery import Celery
#app = Celery('tasks', broker='pyamqp://guest@localhost//')
app = Celery('tasks', backend='redis://localhost', broker='pyamqp://guest@localhost//')
@app.task
def add(x, y):
return x + y
나는 다음과 같은 명령을 사용하여 셀러리 노동자를 실행할 때
celery -A tasks worker --loglevel=info
나는 백엔드를 설정하는 구문 오류가 발생합니다. 이 오류 메시지입니다 :
[2018-07-10 16:37:21,970: CRITICAL/MainProcess] Unrecoverable error: SyntaxError('invalid syntax', ('c:\\users\\user_\\appdata\\local\\programs\\python\\python37-32\\lib\\site-packages\\celery\\backends\\redis.py', 22, 19, 'from . import async, base\n'))Traceback (most recent call last): File "c:\users\user_\appdata\local\programs\python\python37-32\lib\site-packages\kombu\utils\objects.py", line 42, in __get__ return obj.__dict__[self.__name__] KeyError: 'backend' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "c:\users\user_\appdata\local\programs\python\python37-32\lib\site-packages\celery\worker\worker.py", line 205, in start self.blueprint.start(self) File "c:\users\user_\appdata\local\programs\python\python37-32\lib\site-packages\celery\bootsteps.py", line 115, in start self.on_start() File "c:\users\user_\appdata\local\programs\python\python37-32\lib\site-packages\celery\apps\worker.py", line 139, in on_start self.emit_banner() File "c:\users\user_\appdata\local\programs\python\python37-32\lib\site-packages\celery\apps\worker.py", line 154, in emit_banner ' \n', self.startup_info(artlines=not use_image))), File "c:\users\user_\appdata\local\programs\python\python37-32\lib\site-packages\celery\apps\worker.py", line 217, in startup_info results=self.app.backend.as_uri(), File "c:\users\user_\appdata\local\programs\python\python37-32\lib\site-packages\kombu\utils\objects.py", line 44, in __get__ value = obj.__dict__[self.__name__] = self.__get(obj) File "c:\users\user_\appdata\local\programs\python\python37-32\lib\site-packages\celery\app\base.py", line 1196, in backend return self._get_backend() File "c:\users\user_\appdata\local\programs\python\python37-32\lib\site-packages\celery\app\base.py", line 914, in _get_backend self.loader) File "c:\users\user_\appdata\local\programs\python\python37-32\lib\site-packages\celery\app\backends.py", line 70, in by_url return by_name(backend, loader), url File "c:\users\user_\appdata\local\programs\python\python37-32\lib\site-packages\celery\app\backends.py", line 50, in by_name cls = symbol_by_name(backend, aliases) File "c:\users\user_\appdata\local\programs\python\python37-32\lib\site-packages\kombu\utils\imports.py", line 56, in symbol_by_name module = imp(module_name, package=package, **kwargs) File "c:\users\user_\appdata\local\programs\python\python37-32\lib\importlib\__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1006, in _gcd_import File "<frozen importlib._bootstrap>", line 983, in _find_and_load File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 677, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 724, in exec_module File "<frozen importlib._bootstrap_external>", line 860, in get_code File "<frozen importlib._bootstrap_external>", line 791, in source_to_code File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed File "c:\users\user_\appdata\local\programs\python\python37-32\lib\site-packages\celery\backends\redis.py", line 22 from . import async, base ^ SyntaxError: invalid syntax
내가 대신 주석 줄을 사용하는 경우 그러나, 나는 결과 백엔드가 비활성화 단지 아무 문제가없고, 나는에 백엔드 결과를 설정 레디 스 서버가 필요합니다
해결법
-
==============================
1.나는이 문제를 해결했다. 문제의 주요 원인은 내가 파이썬 3.7를 사용하고 있었다이었다. 그러나, 내 지식, 셀러리는 현재 파이썬 3.6과 낮은 작동합니다. 나는 셀러리 코드를 다음과 같이 변경했다 :
나는이 문제를 해결했다. 문제의 주요 원인은 내가 파이썬 3.7를 사용하고 있었다이었다. 그러나, 내 지식, 셀러리는 현재 파이썬 3.6과 낮은 작동합니다. 나는 셀러리 코드를 다음과 같이 변경했다 :
분명히,
이제 파이썬 3의 키워드입니다.
https://github.com/celery/celery/issues/4500 : 당신은 또한이 링크를 읽을 수 있습니다
바라건대,이 대답은 셀러리의 새 버전이 출시 될 때까지 같은 문제가 모든 사람들을 도움이 될 것입니다.
UPDATE : 이것은 파이썬 3.7의 문제입니다. 대신 같은 문제없이 파이썬 3.6을 사용할 수 있습니다. 하지만, 파이썬 3.7을 사용하여 conitnue 싶습니다 셀러리는 당신이 문제를 해결하려면 위의 솔루션을 사용할 수 있습니다 [레디 스]합니다.
-
==============================
2.@Ai 다를 지원, 당신은 redis.py에 AsyncBackendMixin을 유지해야한다.
@Ai 다를 지원, 당신은 redis.py에 AsyncBackendMixin을 유지해야한다.
-
==============================
3.당신은 백엔드 매개 변수의 레디 스 포트와 DB를 추가하려고 했습니까? 또는 셀러리 설정 파일에서 PARAMATERS 추가 CELERY_REDIS_HOST CELERY_REDIS_PORT CELERY_REDIS_DB CELERY_RESULT_BACKEND CELERY_RESULT_PASSWORD
당신은 백엔드 매개 변수의 레디 스 포트와 DB를 추가하려고 했습니까? 또는 셀러리 설정 파일에서 PARAMATERS 추가 CELERY_REDIS_HOST CELERY_REDIS_PORT CELERY_REDIS_DB CELERY_RESULT_BACKEND CELERY_RESULT_PASSWORD
-
==============================
4.으로 설치 모습
으로 설치 모습
pip install git+https://github.com/vBlackOut/django-celery.git --upgrade
나를 위해 일
from https://stackoverflow.com/questions/51273659/trouble-in-setting-celery-tasks-backend-in-python by cc-by-sa and MIT license
'REDIS' 카테고리의 다른 글
[REDIS] 레디 스 : 어떻게 다른 키의 값과 동일한 하나의 키를 설정하는 방법? (0) | 2020.01.13 |
---|---|
[REDIS] 레디 스 감시 고정 표시기 이미지 / Dockerfile (0) | 2020.01.13 |
[REDIS] sidekiq 두 개의 별도의 레디 스 인스턴스에 대한 작업? (0) | 2020.01.13 |
[REDIS] 서비스 스택 레디 스 목록 업데이트 (0) | 2020.01.13 |
[REDIS] 어떻게 비동기 토네이도와 레디 스를 사용할 수 있습니까? (0) | 2020.01.13 |