Невозможно запустить gunicorn из-за ошибки импорта - PullRequest
0 голосов
/ 17 января 2019

У меня был django==2.1 проект с virualenv. Затем для решения некоторых проблем с пакетом я создал еще один virtualenv для своего проекта и активировал его. Однако всякий раз, когда я запускаю gunicorn --bind 0.0.0.0:8000 myproject.wsgi:application, я получаю следующую проблему.

Traceback (most recent call last):
File "/home/root/uzagro_4/agrosenv/lib/python3.5/site- 
packages/gunicorn/arbiter.py", line 583, in spawn_worker
worker.init_process()
File "/home/root/uzagro_4/agrosenv/lib/python3.5/site- 
packages/gunicorn/workers/base.py", line 129, in init_process
self.load_wsgi()
File "/home/root/uzagro_4/agrosenv/lib/python3.5/site- 
packages/gunicorn/workers/base.py", line 138, in load_wsgi
self.wsgi = self.app.wsgi()
File "/home/root/uzagro_4/agrosenv/lib/python3.5/site- 
packages/gunicorn/app/base.py", line 67, in wsgi
self.callable = self.load()
File "/home/root/uzagro_4/agrosenv/lib/python3.5/site- 
packages/gunicorn/app/wsgiapp.py", line 52, in load
return self.load_wsgiapp()
File "/home/root/uzagro_4/agrosenv/lib/python3.5/site- 
packages/gunicorn/app/wsgiapp.py", line 41, in load_wsgiapp
return util.import_app(self.app_uri)
File "/home/root/uzagro_4/agrosenv/lib/python3.5/site- 
packages/gunicorn/util.py", line 350, in import_app
__import__(module)
ImportError: No module named 'myproject'
[2019-01-17 04:16:14 +0500] [21107] [INFO] Worker exiting (pid: 21107)
[2019-01-17 04:16:14 +0500] [21104] [INFO] Shutting down: Master
[2019-01-17 04:16:14 +0500] [21104] [INFO] Reason: Worker failed to boot.

Понятия не имею, как решить эту проблему. Это мой файл gunicorn.service:

[Unit]
Description=gunicorn daemon
After=network.target
[Service]
User=root
Group=nginx
WorkingDirectory=/home/root/uzagro_4
ExecStart=/home/root/uzagro_4/agrosenv/bin/gunicorn --workers 3 --bind 
unix:/home/root/uzagro_4/myproject.sock uzagro_4.wsgi:application
[Install]
WantedBy=multi-user.target  

И файл nginx.conf:

    server {
    listen 80;
server_name agros.uz www.agros.uz;

location = /favicon.ico { access_log off; log_not_found off; }

location /static/ {
       root /home/root/uzagro_4/;
}

location / {    
   proxy_set_header Host $http_host;
   proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto $scheme;
       proxy_pass http://unix:/home/root/uzagro_4/myproject.sock;
    }
}

Заранее спасибо!

1 Ответ

0 голосов
/ 17 января 2019

Ошибка импорта модуля ... Я думаю, это потому, что вы на самом деле не запускали venv перед запуском gunicon, поскольку вы делаете это прямо из служебного файла. Вы можете написать bash-файл с некоторыми командами, чтобы включить venv перед запуском gunicorn, чтобы он работал внутри него. Взгляните на эту статью:

http://michal.karzynski.pl/blog/2013/06/09/django-nginx-gunicorn-virtualenv-supervisor/

С уважением.

...