Назад | Перейти на главную страницу

Странное поведение с супервизором, пулеметчиком и Django

У меня действительно странная проблема с супервизором и пулеметом. Я читаю супервайзера документация, все соответствующие сообщения в блогах, stackexchange вопросы но ни один из них не решает мою странную проблему, и я даже не знаю, где искать дальше.

Конфигурация моего супервизора:

[program:djangoapp]
user = regularuser
directory = /path/to/djangoapp
command =
        /path/to/djangoapp/.venv/bin/gunicorn
        --debug
        --log-file -
        --log-level debug
        --name arlista
        --workers 9
        --pythonpath /path/to/necessary/library/source/Python
        djangoapp.wsgi:application
stdout_logfile = /path/to/logfolder/djangoapp.log
autorestart = true
redirect_stderr = true
environment =
        GPG_PASSPHRASE="a_passhprase_with_a_comma_in_it",
        DJANGO_SETTINGS_MODULE="myapp.settings.production",
        DJANGO_SECRET_KEY="secret_key_working_fine",
        DJANGO_DB_ENGINE="django.db.backends.mysql",
        DJANGO_DB_HOST="localhost",
        DJANGO_DB_NAME="dbname",
        DJANGO_DB_USER="dbuser",
        DJANGO_DB_PASSWORD="dbpassword",
        DJANGO_MEDIA_ROOT="/path/to/djangoapp/media",
        DJANGO_STATIC_ROOT="/path/to/djangoapp/static_root",
        # a couple more environment variables here for Django

Вроде все нормально работает. Он может подключаться к базе данных, я вижу djangoapp.log, то myapp.settings.production pyc файла создается, поэтому настройки загружаются. DJANGO_MEDIA_ROOT работает нормально, потому что изображения подаются из этой папки (и если я удалю этот параметр, Django даже не запустится).

ТЕМ НЕ МЕНИЕ есть страницы, когда зашифрованные изображения расшифровываются на лету (вот почему необходим GPG_PASSHPRASE), и они дают мне пустые изображения (изображения с нулевой длиной, поэтому Django работает, а расшифровка - нет). Расшифровка производится /usr/bin/gpg. Функция, которая обрабатывает дешифрование, находится в пакете в /path/to/necessary/library/source/Python. regularuser может читать пакеты из этой папки.

Если я запускаю процесс с выскочкой, передавая те же переменные среды с env строфы или даже чтение их из файла, все нормально, картинки расшифровывались, но не с супервайзером.

Я пробовал переменные среды с одинарной кавычкой, без кавычек, пройти PYTHONPATH стрелять --pythonpath или вариант среды, и все равно не повезло. Что я могу сделать? Может проблема в том, что GPG_PASSHPRASE содержит запятую? (Я не могу это изменить.) Что еще? У меня действительно заканчиваются идеи.

Я, наверное, ничем не могу помочь, но я выброшу некоторые возможности (которые могут быть совершенно неправильными)

  • Перед последней строкой команды не должно быть пробелов ("djangoapp..."). Возможно, какой-то шаг в вашей цепочке сборки объединяет это с предыдущим --pythonpath флаг, и оба игнорируются.
  • Запятая в коде доступа (сомнительно) - Вы пробовали просто изменить код доступа? Или экранирование запятой?