gunicorn не работает под супервизором (но работает сам по себе)

Я без проблем запускал gunicorn под супервизором, и в эти выходные он перестал работать.

Когда выполните application start внутри supervisorctl, это будет в журнале приложения:

Traceback (most recent call last):
 File "/usr/local/bin/gunicorn", line 9, in <module>
   load_entry_point('gunicorn==19.0.0', 'console_scripts', 'gunicorn')()
 File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/wsgiapp.py", line 74, in run
   WSGIApplication("%(prog)s [OPTIONS] [APP_MODULE]").run()
 File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/base.py", line 166, in run
   super(Application, self).run()
 File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/base.py", line 71, in run
   Arbiter(self).run()
 File "/usr/local/lib/python2.7/dist-packages/gunicorn/arbiter.py", line 192, in run
   self.halt()
 File "/usr/local/lib/python2.7/dist-packages/gunicorn/arbiter.py", line 292, in halt
   self.stop()
 File "/usr/local/lib/python2.7/dist-packages/gunicorn/arbiter.py", line 343, in stop
   time.sleep(0.1)
 File "/usr/local/lib/python2.7/dist-packages/gunicorn/arbiter.py", line 209, in handle_chld
   self.reap_workers()
 File "/usr/local/lib/python2.7/dist-packages/gunicorn/arbiter.py", line 459, in reap_workers
   raise HaltServer(reason, self.WORKER_BOOT_ERROR)
gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3>

Я запускаю приложение с этой конфигурацией:

[program:application]
command=/usr/local/bin/gunicorn application:application -c /home/azureuser/rz-app/gunicorn.conf.py
directory=/home/azureuser/rz-app/
user=root
autostart=true
autorestart=true
redirect_stderr=True
stdout_logfile = /home/azureuser/rz-app/rz-app_log.log
stderr_logfile = /home/azureuser/rz-app/rz-app_errors.log

содержимое gunicorn.conf.py следующее:

import multiprocessing

bind = "0.0.0.0:5000"

workers = multiprocessing.cpu_count() * 4 + 1
user = 'root'
group = 'root'

max_requests = 200
max_requests_jitter = 20

если я запускаю команду на терминале вне супервизора: gunicorn application:application -c gunicorn.conf.py все работает как положено.

Это фляжное приложение, и вот файл application.py:

import sys
reload(sys)
sys.setdefaultencoding("utf-8")

import socket
socket.setdefaulttimeout(12)

from werkzeug.contrib.fixers import ProxyFix

from app import application
application.wsgi_app = ProxyFix(application.wsgi_app)


if __name__ == '__main__':

    application.run(host='0.0.0.0', port=5000, debug=False)

Как я могу это исправить?

РЕДАКТИРОВАТЬ: я заметил, что это проблема с пользователем root, когда вне супервизора я запустил:

sudo /usr/local/bin/gunicorn application:application -c /home/azureuser/rz-app/gunicorn.conf.py, все работает, но когда я делаю:

sudo su, а затем /usr/local/bin/gunicorn application:application -c /home/azureuser/rz-app/gunicorn.conf.py не работает


person tiagosilva    schedule 13.07.2015    source источник
comment
заметил, что это, похоже, проблема с пользователем root, когда я запускаю вне супервизора: sudo /usr/local/bin/gunicorn application:application -c /home/azureuser/rz-app/gunicorn.conf.py, все работает, но когда я делаю: sudo su, а затем /usr/local/bin/gunicorn application:application -c /home/azureuser/rz-app/gunicorn.conf.py, это не работает   -  person tiagosilva    schedule 14.07.2015


Ответы (1)


Обнаружил проблему, это не имело никакого отношения к пушке или супервизору, у моего приложения была зависимость, которая загружалась только в юзере, и я заметил, что когда я сделал sudo su перед командой, появилась та же проблема, поэтому я записал, что происходило во время будучи пользователем root /usr/local/bin/gunicorn --log-file=- application:application -c /home/azureuser/rz-app/gunicorn.conf.py, добавил --log-file=- и обнаружил мучавшую меня ошибку.

person tiagosilva    schedule 14.07.2015