使用docker进行部署时,Celery,Django,Redis遇到错误99

前端之家收集整理的这篇文章主要介绍了使用docker进行部署时,Celery,Django,Redis遇到错误99前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我尝试在docker中部署我的Django项目和芹菜,我想使用redis作为后端的结果.

Django版本1.11.3
芹菜版4.1.0

我的docker-compose.yml如下:

python:
  image: python:latest
  restart: always
  expose:
    - "8000"
  volumes:
    - ~/django/902Scratch/API:/home/django/API 
    - /var/sb2_files:/var/sb2_files 
    - /home/tuopinpin/JudgeServer/tests/test_case:/test_case 
  links:
    - celery:celery
  command: bash -c " cd /home/django/API &&  python manage.py runserver 0.0.0.0:8000"
  ports:
        - "0.0.0.0:8000:8000"

celery:
  image: python:latest
  restart: always
  volumes:
    - ~/django/902Scratch/API:/home/django/API 
    - /var/sb2_files:/var/sb2_files 
  user: nobody
  depends_on:
    - redis
  links:
    - redis:redis
  command: bash -c " cd /home/django/API && celery -A API worker"

redis:
  image: redis:alpine
  restart: always
  expose:
    - '6379'
  ports:
    - '6379:6379'

django的芹菜设置如下:

CELERY_BROKER_URL = 'redis://redis:6379/0'
CELERY_BROKER_TRANSPORT = 'redis'
CELERY_RESULT_BACKEND = "redis"
CELERY_BACKEND_URL = 'redis://redis:6379/1'

和celery -A proj report命令返回这样的信息

celery_1        | software -> celery:4.1.0 (latentcall) kombu:4.1.0 py:3.6.5
celery_1        |             billiard:3.5.0.3 redis:2.10.5
celery_1        | platform -> system:Linux arch:64bit,ELF imp:CPython
celery_1        | loader   -> celery.loaders.app.AppLoader
celery_1        | settings -> transport:redis results:redis
celery_1        | 
celery_1        | ABSOLUTE_URL_OVERRIDES: {
celery_1        |  }
celery_1        | ADMINS: []
celery_1        | ALLOWED_HOSTS: ['*']
celery_1        | APPEND_SLASH: True
celery_1        | AUTHENTICATION_BACKENDS: 
celery_1        |     ('django.contrib.auth.backends.ModelBackend',)
celery_1        | AUTH_PASSWORD_VALIDATORS: '********'
celery_1        | AUTH_USER_MODEL: 'scratch_api.BaseUser'
celery_1        | AVATAR_AUTO_GENERATE_SIZES: 
celery_1        |     (160,160)
celery_1        | AVATAR_CACHE_ENABLED: False
celery_1        | AVATAR_CHANGE_TEMPLATE: 'avatar/change_avatar.html'
celery_1        | AVATAR_CLEANUP_DELETED: True
celery_1        | AVATAR_DEFAULT_URL: 'img/user_img.png'
celery_1        | AVATAR_GRAVATAR_FIELD: 'username'
celery_1        | AVATAR_MAX_AVATARS_PER_USER: 1
celery_1        | AVATAR_PROVIDERS: 
celery_1        |     ('avatar.providers.PrimaryAvatarProvider',celery_1        |  'avatar.providers.DefaultAvatarProvider')
celery_1        | BASE_DIR: '/home/django/API'
celery_1        | CACHES: {
celery_1        |  'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}}
celery_1        | CACHE_MIDDLEWARE_ALIAS: 'default'
celery_1        | CACHE_MIDDLEWARE_KEY_PREFIX: '********'
celery_1        | CACHE_MIDDLEWARE_SECONDS: 600
celery_1        | CELERY_BACKEND_URL: 'redis://redis:6379/0'
celery_1        | CELERY_BROKER_TRANSPORT: 'redis'
celery_1        | CELERY_BROKER_URL: 'redis://redis:6379/0'
celery_1        | CELERY_IMPORTS: 
celery_1        |     ('scratch_api.tasks',)
celery_1        | CELERY_RESULT_BACKEND: 'redis'
celery_1        | CKEDITOR_CONFIGS: {
celery_1        |     'default': {   'extraPlugins': 'codesnippet,uploadimage,widget,lineutils',celery_1        |                    'language': 'zh-Hans',celery_1        |                    'removePlugins': 'elementspath',celery_1        |                    'skin': 'moono',celery_1        |                    'toolbar': 'full'},celery_1        |     'qa_ckeditor': {   'extraPlugins': 'codesnippet,celery_1        |                        'language': 'zh-Hans',celery_1        |                        'removePlugins': 'elementspath'}}
celery_1        | CKEDITOR_IMAGE_BACKEND: 'pillow'
celery_1        | CKEDITOR_UPLOAD_PATH: 'course/'
celery_1        | COMMENTS_APP: 'fluent_comments'
celery_1        | CORS_ALLOW_HEADERS: 
celery_1        |     ('Authorization',)
celery_1        | CORS_ALLOW_METHODS: 
celery_1        |     ('GET','POST')
celery_1        | CORS_ORIGIN_ALLOW_ALL: True
celery_1        | CRISPY_TEMPLATE_PACK: 'bootstrap3'
celery_1        | CSRF_COOKIE_AGE: 31449600
celery_1        | CSRF_COOKIE_DOMAIN: None
celery_1        | CSRF_COOKIE_HTTPONLY: False
celery_1        | CSRF_COOKIE_NAME: 'csrftoken'
celery_1        | CSRF_COOKIE_PATH: '/'
celery_1        | CSRF_COOKIE_SECURE: False
celery_1        | CSRF_FAILURE_VIEW: 'django.views.csrf.csrf_failure'
celery_1        | CSRF_HEADER_NAME: 'HTTP_X_CSRFTOKEN'
celery_1        | CSRF_TRUSTED_ORIGINS: []
celery_1        | CSRF_USE_SESSIONS: False
celery_1        | DATABASES: {
celery_1        |     'default': {   'ENGINE': 'django.db.backends.sqlite3',celery_1        |                    'NAME': '/home/django/API/db.sqlite3'}}
celery_1        | DATABASE_ROUTERS: '********'
celery_1        | DATA_UPLOAD_MAX_MEMORY_SIZE: 2621440
celery_1        | DATA_UPLOAD_MAX_NUMBER_FIELDS: 1000
celery_1        | DATETIME_FORMAT: 'N j,Y,P'
celery_1        | DATETIME_INPUT_FORMATS: ['%Y-%m-%d %H:%M:%S',celery_1        |  '%Y-%m-%d %H:%M:%S.%f',celery_1        |  '%Y-%m-%d %H:%M',celery_1        |  '%Y-%m-%d',celery_1        |  '%m/%d/%Y %H:%M:%S',celery_1        |  '%m/%d/%Y %H:%M:%S.%f',celery_1        |  '%m/%d/%Y %H:%M',celery_1        |  '%m/%d/%Y',celery_1        |  '%m/%d/%y %H:%M:%S',celery_1        |  '%m/%d/%y %H:%M:%S.%f',celery_1        |  '%m/%d/%y %H:%M',celery_1        |  '%m/%d/%y']
celery_1        | DATE_FORMAT: 'N j,Y'
celery_1        | DATE_INPUT_FORMATS: ['%Y-%m-%d',celery_1        |  '%m/%d/%y',celery_1        |  '%b %d %Y',celery_1        |  '%b %d,%Y',celery_1        |  '%d %b %Y',celery_1        |  '%d %b,celery_1        |  '%B %d %Y',celery_1        |  '%B %d,celery_1        |  '%d %B %Y',celery_1        |  '%d %B,%Y']
celery_1        | DEBUG: True
celery_1        | DEBUG_PROPAGATE_EXCEPTIONS: False
celery_1        | DECIMAL_SEPARATOR: '.'
celery_1        | DEFAULT_CHARSET: 'utf-8'
celery_1        | DEFAULT_CONTENT_TYPE: 'text/html'
celery_1        | DEFAULT_EXCEPTION_REPORTER_FILTER: 'django.views.debug.SafeExceptionReporterFilter'
celery_1        | DEFAULT_FILE_STORAGE: 'django.core.files.storage.FileSystemStorage'
celery_1        | DEFAULT_FROM_EMAIL: 'tuopinpin@www.tuopinpin.com'
celery_1        | DEFAULT_INDEX_TABLESPACE: ''
celery_1        | DEFAULT_TABLESPACE: ''
celery_1        | DISALLOWED_USER_AGENTS: []
celery_1        | EMAIL_BACKEND: 'django.core.mail.backends.smtp.EmailBackend'
celery_1        | EMAIL_HOST: 'smtpdm.aliyun.com'
celery_1        | EMAIL_HOST_PASSWORD: '********'
celery_1        | EMAIL_HOST_USER: 'tuopinpin@www.tuopinpin.com'
celery_1        | EMAIL_PORT: 25
celery_1        | EMAIL_SSL_CERTFILE: None
celery_1        | EMAIL_SSL_KEYFILE: '********'
celery_1        | EMAIL_SUBJECT_PREFIX: '[Django] '
celery_1        | EMAIL_TIMEOUT: None
celery_1        | EMAIL_USE_LOCALTIME: False
celery_1        | EMAIL_USE_SSL: False
celery_1        | EMAIL_USE_TLS: False
celery_1        | FILE_CHARSET: 'utf-8'
celery_1        | FILE_UPLOAD_DIRECTORY_PERMISSIONS: None
celery_1        | FILE_UPLOAD_HANDLERS: ['django.core.files.uploadhandler.MemoryFileUploadHandler',celery_1        |  'django.core.files.uploadhandler.TemporaryFileUploadHandler']
celery_1        | FILE_UPLOAD_MAX_MEMORY_SIZE: 2621440
celery_1        | FILE_UPLOAD_PERMISSIONS: None
celery_1        | FILE_UPLOAD_TEMP_DIR: None
celery_1        | FIRST_DAY_OF_WEEK: 0
celery_1        | FIXTURE_DIRS: []
celery_1        | FLUENT_COMMENTS_EXCLUDE_FIELDS: 
celery_1        |     ('name','email','url','title')
celery_1        | FLUENT_COMMENTS_FORM_CLASS: 'API.comments.CommentForm'
celery_1        | FLUENT_COMMENTS_USE_EMAIL_NOTIFICATION: False
celery_1        | FORCE_SCRIPT_NAME: None
celery_1        | FORMAT_MODULE_PATH: None
celery_1        | FORM_RENDERER: 'django.forms.renderers.DjangoTemplates'
celery_1        | IGNORABLE_404_URLS: []
celery_1        | INSTALLED_APPS: ['django.contrib.admin',celery_1        |  'django.contrib.auth',celery_1        |  'django.contrib.contenttypes',celery_1        |  'django.contrib.sessions',celery_1        |  'django.contrib.messages',celery_1        |  'django.contrib.staticfiles',celery_1        |  'scratch_api.apps.ScratchApiConfig',celery_1        |  'course.apps.CourseConfig',celery_1        |  'rest_framework',celery_1        |  'rest_framework.authtoken',celery_1        |  'corsheaders',celery_1        |  'django_tables2',celery_1        |  'ckeditor',celery_1        |  'ckeditor_uploader',celery_1        |  'website',celery_1        |  'dry_rest_permissions',celery_1        |  'ordered_model',celery_1        |  'production_process',celery_1        |  'guardian',celery_1        |  'fluent_comments',celery_1        |  'threadedcomments',celery_1        |  'crispy_forms',celery_1        |  'django_comments',celery_1        |  'django.contrib.sites',celery_1        |  'OJ',celery_1        |  'bootstrap4',celery_1        |  'django_filters',celery_1        |  'notifications',celery_1        |  'qa',celery_1        |  'mptt',celery_1        |  'avatar',celery_1        |  'taggit',celery_1        |  'qr_code',celery_1        |  'pinax.badges',celery_1        |  'password_reset']
celery_1        | INTERNAL_IPS: []
celery_1        | LANGUAGES: [('zh-hans','中文简体'),('en','English')]
celery_1        | LANGUAGES_BIDI: ['he','ar','fa','ur']
celery_1        | LANGUAGE_CODE: 'zh-hans'
celery_1        | LANGUAGE_COOKIE_AGE: None
celery_1        | LANGUAGE_COOKIE_DOMAIN: None
celery_1        | LANGUAGE_COOKIE_NAME: 'django_language'
celery_1        | LANGUAGE_COOKIE_PATH: '/'
celery_1        | LOCALE_PATHS: []
celery_1        | LOGGING: {
celery_1        |  }
celery_1        | LOGGING_CONFIG: 'logging.config.dictConfig'
celery_1        | LOGIN_REDIRECT_URL: '/t/index'
celery_1        | LOGIN_URL: '/accounts/login/'
celery_1        | logoUT_REDIRECT_URL: '/t/'
celery_1        | MANAGERS: []
celery_1        | MEDIA_ROOT: 'media/'
celery_1        | MEDIA_URL: '/media/'
celery_1        | MESSAGE_STORAGE: 'django.contrib.messages.storage.fallback.FallbackStorage'
celery_1        | MIDDLEWARE: ['django.middleware.security.SecurityMiddleware',celery_1        |  'django.contrib.sessions.middleware.SessionMiddleware',celery_1        |  'django.middleware.locale.LocaleMiddleware',celery_1        |  'corsheaders.middleware.CorsMiddleware',celery_1        |  'django.middleware.common.CommonMiddleware',celery_1        |  'django.middleware.csrf.CsrfViewMiddleware',celery_1        |  'django.contrib.auth.middleware.AuthenticationMiddleware',celery_1        |  'scratch_api.middleware.one_session_per_user_middleware',celery_1        |  'django.contrib.messages.middleware.MessageMiddleware',celery_1        |  'django.middleware.clickjacking.XFrameOptionsMiddleware']
celery_1        | MIDDLEWARE_CLASSES: ['django.middleware.common.CommonMiddleware',celery_1        |  'django.middleware.csrf.CsrfViewMiddleware']
celery_1        | MIGRATION_MODULES: {
celery_1        |  }
celery_1        | MONTH_DAY_FORMAT: 'F j'
celery_1        | NUMBER_GROUPING: 0
celery_1        | PASSWORD_HASHERS: '********'
celery_1        | PASSWORD_RESET_TIMEOUT_DAYS: '********'
celery_1        | PREPEND_WWW: False
celery_1        | PROFANITIES_LIST: '********'
celery_1        | REST_FRAMEWORK: {
celery_1        |     'DEFAULT_AUTHENTICATION_CLASSES': (   'rest_framework.authentication.TokenAuthentication',),celery_1        |     'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.AllowAny',)}
celery_1        | ROOT_URLconf: 'API.urls'
celery_1        | SECRET_KEY: '********'
celery_1        | SECURE_BROWSER_XSS_FILTER: False
celery_1        | SECURE_CONTENT_TYPE_NOSNIFF: False
celery_1        | SECURE_HSTS_INCLUDE_SUBDOMAINS: False
celery_1        | SECURE_HSTS_PRELOAD: False
celery_1        | SECURE_HSTS_SECONDS: 0
celery_1        | SECURE_PROXY_SSL_HEADER: None
celery_1        | SECURE_REDIRECT_EXEMPT: []
celery_1        | SECURE_SSL_HOST: None
celery_1        | SECURE_SSL_REDIRECT: False
celery_1        | SERVER_EMAIL: 'root@localhost'
celery_1        | SESSION_CACHE_ALIAS: 'default'
celery_1        | SESSION_COOKIE_AGE: 1209600
celery_1        | SESSION_COOKIE_DOMAIN: None
celery_1        | SESSION_COOKIE_HTTPONLY: False
celery_1        | SESSION_COOKIE_NAME: 'sessionid'
celery_1        | SESSION_COOKIE_PATH: '/'
celery_1        | SESSION_COOKIE_SECURE: False
celery_1        | SESSION_ENGINE: 'django.contrib.sessions.backends.db'
celery_1        | SESSION_EXPIRE_AT_BROWSER_CLOSE: True
celery_1        | SESSION_FILE_PATH: None
celery_1        | SESSION_SAVE_EVERY_REQUEST: False
celery_1        | SESSION_SERIALIZER: 'django.contrib.sessions.serializers.JSONSerializer'
celery_1        | SETTINGS_MODULE: 'API.settings'
celery_1        | SHORT_DATETIME_FORMAT: 'Y/m/d G:i:s'
celery_1        | SHORT_DATE_FORMAT: 'm/d/Y'
celery_1        | SIGNING_BACKEND: 'django.core.signing.TimestampSigner'
celery_1        | SILENCED_SYSTEM_CHECKS: []
celery_1        | SITE_ID: 2
celery_1        | STATICFILES_DIRS: 
celery_1        |     ('/home/django/API/static/',)
celery_1        | STATICFILES_FINDERS: ['django.contrib.staticfiles.finders.FileSystemFinder',celery_1        |  'django.contrib.staticfiles.finders.AppDirectoriesFinder']
celery_1        | STATICFILES_STORAGE: 'django.contrib.staticfiles.storage.StaticFilesStorage'
celery_1        | STATIC_ROOT: None
celery_1        | STATIC_URL: '/static/'
celery_1        | TEMPLATES: [{'APP_DIRS': True,celery_1        |   'BACKEND': 'django.template.backends.django.DjangoTemplates',celery_1        |   'DIRS': ['/home/django/API/templates',celery_1        |            '/home/django/API/html'],celery_1        |   'OPTIONS': {'context_processors': ['django.template.context_processors.debug',celery_1        |                                      'django.template.context_processors.request',celery_1        |                                      'django.contrib.auth.context_processors.auth',celery_1        |                                      'django.contrib.messages.context_processors.messages',celery_1        |                                      'django.template.context_processors.request']}}]
celery_1        | TEST_NON_SERIALIZED_APPS: []
celery_1        | TEST_RUNNER: 'django.test.runner.DiscoverRunner'
celery_1        | THOUSAND_SEPARATOR: ','
celery_1        | TIME_FORMAT: 'P'
celery_1        | TIME_INPUT_FORMATS: ['%H:%M:%S','%H:%M:%S.%f','%H:%M']
celery_1        | TIME_ZONE: 'Asia/Shanghai'
celery_1        | USE_ETAGS: False
celery_1        | USE_I18N: True
celery_1        | USE_L10N: True
celery_1        | USE_THOUSAND_SEPARATOR: False
celery_1        | USE_TZ: True
celery_1        | USE_X_FORWARDED_HOST: False
celery_1        | USE_X_FORWARDED_PORT: False
celery_1        | WSGI_APPLICATION: 'API.wsgi.application'
celery_1        | X_FRAME_OPTIONS: 'SAMEORIGIN'
celery_1        | YEAR_MONTH_FORMAT: 'F Y'
celery_1        | is_overridden: 

然后,当我提交需要返回结果的任务时,结果如下:

python_1        | Internal Server Error: /OJ/submit/
python_1        | Traceback (most recent call last):
python_1        |   File "/usr/local/lib/python3.6/site-packages/redis/connection.py",line 439,in connect
python_1        |     sock = self._connect()
python_1        |   File "/usr/local/lib/python3.6/site-packages/redis/connection.py",line 494,in _connect
python_1        |     raise err
python_1        |   File "/usr/local/lib/python3.6/site-packages/redis/connection.py",line 482,in _connect
python_1        |     sock.connect(socket_address)
python_1        | OSError: [Errno 99] Cannot assign requested address
python_1        | 
python_1        | During handling of the above exception,another exception occurred:
python_1        | 
python_1        | Traceback (most recent call last):
python_1        |   File "/usr/local/lib/python3.6/site-packages/redis/client.py",line 2165,in _execute
python_1        |     return command(*args)
python_1        |   File "/usr/local/lib/python3.6/site-packages/redis/connection.py",line 563,in send_command
python_1        |     self.send_packed_command(self.pack_command(*args))
python_1        |   File "/usr/local/lib/python3.6/site-packages/redis/connection.py",line 538,in send_packed_command
python_1        |     self.connect()
python_1        |   File "/usr/local/lib/python3.6/site-packages/redis/connection.py",line 442,in connect
python_1        |     raise ConnectionError(self._error_message(e))
python_1        | redis.exceptions.ConnectionError: Error 99 connecting to localhost:6379. Cannot assign requested address.
python_1        | 
python_1        | During handling of the above exception,another exception occurred:
python_1        | 
python_1        | Traceback (most recent call last):
python_1        |   File "/usr/local/lib/python3.6/site-packages/redis/connection.py",another exception occurred:
python_1        | 
python_1        | Traceback (most recent call last):
python_1        |   File "/usr/local/lib/python3.6/site-packages/kombu/connection.py",line 414,in _reraise_as_library_errors
python_1        |     yield
python_1        |   File "/usr/local/lib/python3.6/site-packages/celery/app/base.py",line 736,in send_task
python_1        |     self.backend.on_task_call(P,task_id)
python_1        |   File "/usr/local/lib/python3.6/site-packages/celery/backends/redis.py",line 189,in on_task_call
python_1        |     self.result_consumer.consume_from(task_id)
python_1        |   File "/usr/local/lib/python3.6/site-packages/celery/backends/redis.py",line 75,in consume_from
python_1        |     return self.start(task_id)
python_1        |   File "/usr/local/lib/python3.6/site-packages/celery/backends/redis.py",line 57,in start
python_1        |     self._consume_from(initial_task_id)
python_1        |   File "/usr/local/lib/python3.6/site-packages/celery/backends/redis.py",line 82,in _consume_from
python_1        |     self._pubsub.subscribe(key)
python_1        |   File "/usr/local/lib/python3.6/site-packages/redis/client.py",line 2229,in subscribe
python_1        |     ret_val = self.execute_command('SUBSCRIBE',*iterkeys(new_channels))
python_1        |   File "/usr/local/lib/python3.6/site-packages/redis/client.py",line 2161,in execute_command
python_1        |     self._execute(connection,connection.send_command,*args)
python_1        |   File "/usr/local/lib/python3.6/site-packages/redis/client.py",line 2172,in _execute
python_1        |     connection.connect()
python_1        |   File "/usr/local/lib/python3.6/site-packages/redis/connection.py",another exception occurred:
python_1        | 
python_1        | Traceback (most recent call last):
python_1        |   File "/usr/local/lib/python3.6/site-packages/django/core/handlers/exception.py",line 41,in inner
python_1        |     response = get_response(request)
python_1        |   File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py",line 187,in _get_response
python_1        |     response = self.process_exception_by_middleware(e,request)
python_1        |   File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py",line 185,in _get_response
python_1        |     response = wrapped_callback(request,*callback_args,**callback_kwargs)
python_1        |   File "/usr/local/lib/python3.6/site-packages/django/views/decorators/csrf.py",line 58,in wrapped_view
python_1        |     return view_func(*args,**kwargs)
python_1        |   File "/usr/local/lib/python3.6/site-packages/django/views/generic/base.py",line 68,in view
python_1        |     return self.dispatch(request,*args,**kwargs)
python_1        |   File "/usr/local/lib/python3.6/site-packages/rest_framework/views.py",line 489,in dispatch
python_1        |     response = self.handle_exception(exc)
python_1        |   File "/usr/local/lib/python3.6/site-packages/rest_framework/views.py",line 449,in handle_exception
python_1        |     self.raise_uncaught_exception(exc)
python_1        |   File "/usr/local/lib/python3.6/site-packages/rest_framework/views.py",line 486,in dispatch
python_1        |     response = handler(request,**kwargs)
python_1        |   File "/home/django/API/OJ/ajax_views.py",line 30,in post
python_1        |     task = judge.delay(submission.id)
python_1        |   File "/usr/local/lib/python3.6/site-packages/celery/app/task.py",line 413,in delay
python_1        |     return self.apply_async(args,kwargs)
python_1        |   File "/usr/local/lib/python3.6/site-packages/celery/app/task.py",line 536,in apply_async
python_1        |     **options
python_1        |   File "/usr/local/lib/python3.6/site-packages/celery/app/base.py",line 737,in send_task
python_1        |     amqp.send_task_message(P,name,message,**options)
python_1        |   File "/usr/local/lib/python3.6/contextlib.py",line 99,in __exit__
python_1        |     self.gen.throw(type,value,traceback)
python_1        |   File "/usr/local/lib/python3.6/site-packages/kombu/connection.py",line 419,in _reraise_as_library_errors
python_1        |     sys.exc_info()[2])
python_1        |   File "/usr/local/lib/python3.6/site-packages/vine/five.py",line 178,in reraise
python_1        |     raise value.with_traceback(tb)
python_1        |   File "/usr/local/lib/python3.6/site-packages/kombu/connection.py",in connect
python_1        |     raise ConnectionError(self._error_message(e))
python_1        | kombu.exceptions.OperationalError: Error 99 connecting to localhost:6379. Cannot assign requested address.

我很困惑,因为我已将CELERY_BACKEND_URL修改为redis:// redis:6379/0. redis是docker-compose中的主机名,但似乎芹菜正在尝试连接到localhost.我尝试在没有docker的情况下部署所有这些,并将CELERY_BACKEND_URL修改回127.0.0.1,一切正常.我还尝试使用python docker和celery docker上的python redis库连接到redis,并且两个docker都可以使用redis.

最佳答案
我会尝试将它们设置在同一个docker网络中,然后检查它们是否可以看到对方,在运行你的docker-compose之后尝试一个docker exec -it celery curl redis:6379
你可以检查的另一件事是docker exec -it redis curl localhost:6379 with / 0和/ 1然后如果一切正常,在这个检查中它可能是一个conf问题,否则很可能你的redis启动不正确或你的容器没有看到对方,然后你需要调查一下,但首先要检查的是你的所有服务都正常运行,你的容器可以看到对方
原文链接:https://www.f2er.com/docker/436876.html

猜你在找的Docker相关文章