Развертывание apscheduler в производство дает WebSocketBadStatusException Статус рукопожатия 502 Плохой шлюз

#nginx #django-rest-framework #websocket #gunicorn #apscheduler

Вопрос:

Я получаю WebSocketBadStatusException Состояние рукопожатия 502 Плохая ошибка шлюза в рабочей среде после развертывания функции, которая использует apscheduler, хотя apscheduler работает. У меня есть drf в качестве бэкенда, обслуживаемого через nginx и gunicorn. Я использую channels.generic.websocke.AsyncWebsocketConsumer для написания websocket consumer. Мой код планировщика:

 from apscheduler.schedulers.background import BackgroundScheduler
from apscheduler.jobstores.sqlalchemy import SQLAlchemyJobStore
from apscheduler.executors.pool import ThreadPoolExecutor
from myapp.settings.production import DATABASES
from urllib.parse import quote_plus

jobstores = {
    'default': SQLAlchemyJobStore(url=f'postgresql://{DATABASES["default"]["USER"]}:{quote_plus(DATABASES["default"]["PASSWORD"])}@{DATABASES["default"]["HOST"]}:{DATABASES["default"]["PORT"]}/{DATABASES["default"]["NAME"]}')
}

executors = {
    'default': ThreadPoolExecutor(20)
}

job_defaults = {
    'coalesce': False,
    'max_instances': 10
}

tscheduler = BackgroundScheduler(jobstores=jobstores, executors=executors, job_defaults=job_defaults)
 

Как я запускаю планировщик:

 from django.apps import AppConfig
from organizations.schedular import tscheduler

class OrganizationsConfig(AppConfig):
    name = 'organizations'

    def ready(self):
        tscheduler.start()
 

Как я использую планировщик:

 #scheduling welcome email
run_at = datetime.datetime.now()   datetime.timedelta(minutes=30)
tscheduler.add_job(
    send_welcome_email,
    'date',
    next_run_time=run_at,
    args=[
        organization_user_instance.user.email,
        organization_user_instance.user.profile.first_name
    ],
    id=f'welcome_{organization_user_instance.id}'
)
 

На моей локальной машине websocket и планировщик работают нормально. Я борюсь с конфигурацией nginx и gunicorn, если что-то связано с этим, не стесняйтесь направлять меня.