Проблема при запуске gunicorn с .sh (нет модуля с именем '.0') - PullRequest
0 голосов
/ 22 ноября 2018

Я пытаюсь запустить приложение фляги с gunicorn, но у меня возникла проблема.

При запуске из командной строки все работает нормально с этой командой:

/usr/local/bin/gunicorn --preload --certfile /etc/letsencrypt/live/server_name.net/fullchain.pem --keyfile /etc/letsencrypt/live/server_name.net/privkey.pem -w 17
-b 0.0.0.0:9090 wsgi:app

Одна и та же команда из сценария .sh выдает ошибку:

    Traceback (most recent call last):
  File "/usr/local/bin/gunicorn", line 11, in <module>
    sys.exit(run())
  File "/usr/local/lib/python3.4/dist-packages/gunicorn/app/wsgiapp.py", line 61, in run
    WSGIApplication("%(prog)s [OPTIONS] [APP_MODULE]").run()
  File "/usr/local/lib/python3.4/dist-packages/gunicorn/app/base.py", line 221, in run
    super(Application, self).run()
  File "/usr/local/lib/python3.4/dist-packages/gunicorn/app/base.py", line 70, in run
    Arbiter(self).run()
  File "/usr/local/lib/python3.4/dist-packages/gunicorn/arbiter.py", line 58, in __init__
    self.setup(app)
  File "/usr/local/lib/python3.4/dist-packages/gunicorn/arbiter.py", line 118, in setup
    self.app.wsgi()
  File "/usr/local/lib/python3.4/dist-packages/gunicorn/app/base.py", line 65, in wsgi
    self.callable = self.load()
  File "/usr/local/lib/python3.4/dist-packages/gunicorn/app/wsgiapp.py", line 52, in load
    return self.load_wsgiapp()
  File "/usr/local/lib/python3.4/dist-packages/gunicorn/app/wsgiapp.py", line 41, in load_wsgiapp
    return util.import_app(self.app_uri)
  File "/usr/local/lib/python3.4/dist-packages/gunicorn/util.py", line 372, in import_app
    __import__(module)
ImportError: No module named '.0'

И cli, и .sh запускаются от имени пользователя root.

Один и тот же сценарий отлично работает на другом сервере, поэтому я думаю, что тампроблема со средой.

Я попытался добавить в сценарий следующие строки в начале сценария, но безуспешно:

$PYTHONPATH=/path/to/my/app

и

$PWD=/path/to/my/app

Это файл wsgi, который я использую:

from api import app

if __name__ == "__main__":
    app.run()

Есть идеи, в чем может быть проблема?

1 Ответ

0 голосов
/ 26 февраля 2019

Мне наконец удалось решить эту проблему.Кажется, работает следующий скрипт:

cd /path_to_app/
gunicorn --certfile=/etc/letsencrypt/live/server_name.net/fullchain.pem --keyfile=/etc/letsencrypt/live/server_name.net/privkey.pem -w 4 -b 0.0.0.0:9090 wsgi:app
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...