2017-10-25 3 views
0

나는 최근에 내 백 엔드에 셀러리를 추가하지만 난 내 config.py이셀러리가 브로커 URL을 모듈로 가져 오려고합니까?

class BaseConfig(object): 
    """ A base configuration of the app """ 

    DEBUG = False 
    SERVER_NAME = "my-production-ip" 
    SECRET_KEY = os.environ['SECRET'] 
    BASE_DIR = os.path.abspath(os.path.dirname(__file__)) 
    SQLALCHEMY_DATABASE_URI = os.environ['SQL_PRODUCTION'] 
    SQLALCHEMY_TRACK_MODIFICATIONS = True 
    CELERY_BROKER_URL = os.environ['CELERY_BROKER_PROD'] 
    CELERY_RESULT_BACKEND = os.environ['CELERY_RESULT_BACKEND_PROD'] 
    DATABASE_CONNECT_OPTIONS = {} 
    THREADS_PER_PAGE = 2 
    CSRF_ENABLED = True 
    CSRF_SESSION_KEY = "secret" 
    MAIL_SERVER = "smtp.gmail.com" 
    MAIL_PORT = 465 
    MAIL_USE_SSL = True 
    MAIL_USE_TSL = False 
    MAIL_USERNAME = "blabla" 
    MAIL_PASSWORD = "pwd" 

CELERY_BROKER_PROD 및 CELERY_RESULT_BACKEND처럼 보이는

[2017-10-25 21:41:37,142: CRITICAL/MainProcess] Unrecoverable error: ImportError('No module named myredisserverip.com',) 
Traceback (most recent call last): 
    File "/usr/local/lib/python2.7/dist-packages/celery/worker/worker.py", line 203, in start 
    self.blueprint.start(self) 
    File "/usr/local/lib/python2.7/dist-packages/celery/bootsteps.py", line 115, in start 
    self.on_start() 
    File "/usr/local/lib/python2.7/dist-packages/celery/apps/worker.py", line 143, in on_start 
    self.emit_banner() 
    File "/usr/local/lib/python2.7/dist-packages/celery/apps/worker.py", line 158, in emit_banner 
    ' \n', self.startup_info(artlines=not use_image))), 
    File "/usr/local/lib/python2.7/dist-packages/celery/apps/worker.py", line 221, in startup_info 
    results=self.app.backend.as_uri(), 
    File "/usr/local/lib/python2.7/dist-packages/kombu/utils/objects.py", line 44, in __get__ 
    value = obj.__dict__[self.__name__] = self.__get(obj) 
    File "/usr/local/lib/python2.7/dist-packages/celery/app/base.py", line 1183, in backend 
    return self._get_backend() 
    File "/usr/local/lib/python2.7/dist-packages/celery/app/base.py", line 901, in _get_backend 
    self.loader) 
    File "/usr/local/lib/python2.7/dist-packages/celery/app/backends.py", line 66, in by_url 
    return by_name(backend, loader), url 
    File "/usr/local/lib/python2.7/dist-packages/celery/app/backends.py", line 46, in by_name 
    cls = symbol_by_name(backend, aliases) 
    File "/usr/local/lib/python2.7/dist-packages/kombu/utils/imports.py", line 56, in symbol_by_name 
    module = imp(module_name, package=package, **kwargs) 
    File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module 
    __import__(name) 
ImportError: No module named myredisserverip.com 

모두 동일

아래에 이상한 오류가 발생했습니다 그리고 그들은 URL을 포함 아마존 AWS에서 실행되는 redis 인스턴스 인스턴트 메신저. 나는이 오류가 내 프로젝트 디렉토리 내에서

celery worker -A app.celery 

를 실행하려고 할 때, 무슨 일입니까?

방법 내가 설정 셀러리는이

celery = Celery(app.name, broker=app.config['CELERY_BROKER_URL']) 
celery.conf.update(app.config) 

답변

2

당신이 CELERY_BROKER_PROD 및 CELERY_RESULTS_BACKEND의 값이 무엇인지 확인할 수있다? 당신이 myredisserverip.com으로 이것을 정의하지만 셀러리 문서에 따르면, 레디 스 서버는 다음과 같이 정의되어야 함을 보인다

여기에 문서에 따라
CELERY_RESULT_BACKEND = 'redis://:[email protected]:port/db' 

: http://docs.celeryproject.org/en/3.1/configuration.html#redis-backend-settings

당신이 필요로하는 broker_url 들어 전송에 대한 정의는 여기에서 확인할 수 있습니다. http://docs.celeryproject.org/en/3.1/configuration.html#broker-url

전송이 누락되었다는 문제가 있습니까? 예 : 환경 변수의 redis : // 접두사?

+0

당신이 옳다고 생각합니다. 아마 redis url 대신 url을 사용했습니다. 나는 그것을 확인하고 알려 주셔서 감사 드리며 그 링크를 제공해 주신 것입니다. –

+0

귀하의 문제를 해결할 수 있다면 저에게 알려주세요! – Lingster

+0

해결되었습니다! 대단히 감사합니다. –

관련 문제