Django
主管、gunicorn 和 Django 的奇怪行為
我對主管和 gunicorn 有一個非常奇怪的問題。我閱讀了主管文件、所有相關的部落格文章、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
可以從該文件夾中讀取包。如果我用 upstart 執行這個過程,用節傳遞相同的環境變數,
env
甚至從文件中讀取它們,一切都很好,圖像被解密,但不是用主管。我嘗試了帶單引號、不帶引號、傳遞
PYTHONPATH
給 gunicorn--pythonpath
或環境選項的環境變數,但仍然沒有運氣。我能做些什麼?GPG_PASSHPRASE 包含逗號會是一個問題嗎?(我無法改變。)還有什麼?我真的沒有想法了。
我可能幫不上忙,但我會排除一些可能性(這可能是完全錯誤的)
- 最後一行命令(“
djangoapp...
”)之前沒有空格。可能您的建構鏈中的某些步驟將其與前一個--pythonpath
標誌連接起來,並且兩者都被忽略了。- 密碼中的逗號(可疑)——您是否嘗試過僅更改密碼?還是轉義逗號?