Файл "/usr/local/lib/python3.6/site-packages/seacucumber/tasks.py", except SESAddressBlacklistedError, exc:

Я работаю над переводом старой версии Django Project (1.8) на новую версию. Я использую python 3.9, Django 3.2.7, docker с celery, Redis, flower on a board. Сейчас такие контейнеры как db(postgres), web(python 3.6), Redis работают хорошо, но celery(worker) и flower не показывают прицелы на жизнь с ошибкой выше.

celery.py

   from __future__ import absolute_import, unicode_literals
   import celery
   import os

   from celery import Celery

   # set the default Django settings module for the 'celery' program.
   os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'core.settings')

  from django.conf import settings  # noqa

  app = Celery('core')

  app.config_from_object('django.conf:settings')

  app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)

  cwd = os.path.dirname(os.path.realpath(__file__))

  environment_name = os.getenv('ENVIRONMENT_NAME', 'dev').lower()

  environment_path = os.path.join(cwd, '', os.getenv('DJANGO_ENVDIR',
                                                 'envs/%s' % environment_name))

  if os.path.isdir(environment_path):
  import envdir
  envdir.open(environment_path)


  class Celery(celery.Celery):
      def on_configure(self):
          if settings.ENABLE_SENTRY:
              import raven
              from raven.contrib.celery import register_signal,   register_logger_signal

              client = raven.Client(settings.RAVEN_DSN)
              # register a custom filter to filter out duplicate logs
              register_logger_signal(client)
             # hook into the Celery error handler
             register_signal(client)

Docker-compose.yaml

  version: '3.8'
  services:
    redis:
      image: redis
      networks:
        - default
      ports:
      - 6379:6379
    worker:
      build:
        context: .
        dockerfile: Dockerfile
      image: madefire/chordtest
      command: celery worker -A core --loglevel=info
     networks:
        - default
      depends_on:
        - redis
      env_file:
        - ./.env.dev
    db:
      container_name: db
      hostname: db
      image: postgres:13.0-alpine
      networks:
        - default
      ports:
        - 5432:5432
      volumes:
        - ./postgres_data:/var/lib/postgresql/data/
      env_file:
        - ./.env.dev
    web:
      container_name: web
      hostname: web
      networks:
        - default
      links:
        - db
      build: ./
      volumes:
        - ./:/app
      ports:
        - 8000:8000
      env_file:
        - ./.env.dev
      depends_on:
        - db
    flower:
      networks:
        - default
      build: ./
      command: flower -A core --port=5555 \
        --broker_api=redis://redis:6379/0
      ports:
        - 5555:5555
   #      - 15672:15672
      depends_on:
        - worker
        - redis
  volumes:
    postgres_data:

Dockerfile:

  FROM python:3.6

  RUN apt-get update && \
     apt-get install -y build-essential && \
     apt-get install -y poppler-utils && \
     apt-get install gettext -y && \
     apt-get install -y libgdal-dev

  RUN export CPLUS_INCLUDE_PATH=/usr/include/gdal && \
      export C_INCLUDE_PATH=/usr/include/gdal

  COPY . /app

  WORKDIR /app
  RUN pip install --upgrade pip && \
      pip install -r requirements.txt

  RUN apt-get remove -y build-essential && \
      apt-get autoremove -y && \
      apt-get clean -y && \
      rm -rf /var/lib/apt/lists/* && \
      rm -rf /root/.cache



  CMD ["/app/entrypoint.sh"]

  EXPOSE 8000

установки, связанные с сельдереем, морским огурцом:

  BROKER_TRANSPORT_OPTIONS = {
       'visibility_timeout': int(os.getenv('BROKER_VISIBILITY_TIMEOUT', 43200)),  #    12 hours
  }

  CELERY_BROKER_POOL_LIMIT = int(os.getenv('BROKER_POOL_LIMIT', 1))
  CELERY_ACCEPT_CONTENT = ['pickle', 'json', 'msgpack']
  CELERY_DEFAULT_QUEUE = 'default'
  CELERY_QUEUES = {
      'default': {
          'exchange': 'default',
          'exchange_type': 'topic',
          'binding_key': 'tasks.#'
      }
  }

Морской огурец

  ENABLE_SEACUCUMBER = str(os.getenv('ENABLE_SEACUCUMBER', PRODUCTION)).lower() ==   'true'

  if ENABLE_SEACUCUMBER:
      INSTALLED_APPS += (
          'seacucumber',
      )

      CUCUMBER_RATE_LIMIT = int(os.getenv('CUCUMBER_RATE_LIMIT', 1))
      EMAIL_BACKEND = 'seacucumber.backend.SESBackend'
      MAILER_EMAIL_BACKEND = 'seacucumber.backend.SESBackend'

      CUCUMBER_ROUTE_QUEUE = os.getenv('CUCUMBER_ROUTE_QUEUE', None)
      if CUCUMBER_ROUTE_QUEUE is not None:
          CELERY_ROUTES['seacucumber.tasks.#'] = {'queue': CUCUMBER_ROUTE_QUEUE}


  ENABLE_SES = str(os.getenv('ENABLE_SES', PRODUCTION)).lower() == 'true'

  if ENABLE_SES:
      AWS_SES_REGION_NAME = os.getenv('AWS_SES_REGION_NAME', 'eu-west-1')
       AWS_SES_REGION_ENDPOINT = os.getenv('AWS_SES_REGION_ENDPOINT', 'email.eu-west-1.amazonaws.com')

      # Workaround for seacucumber not having the option to set region (hasn't been   pushed to a stable version).
      # Instead we override the boto SESConnection classes defaults.
      from boto.ses import SESConnection
      SESConnection.DefaultRegionName = AWS_SES_REGION_NAME
      SESConnection.DefaultRegionEndpoint = AWS_SES_REGION_ENDPOINT
Вернуться на верх