如何从不是django项目文件夹的文件夹中运行gunicorn

时间:2017-03-22 19:53:03

标签: python django gunicorn supervisord

我git在我的主文件夹中克隆了一个项目,让我们称之为/home/telessaude。所以项目根位于/home/telessaude/telessaude_branch_master

如果我在Django项目主文件夹(/ home / telessaude / telessaude_branch_master)内并发出诸如

之类的gunicorn comman

gunicorn -w 2 -b 0.0.0.0:8000 telessaude.wsgi_dev:application --reload --timeout 900

gunicorn开始并且工作得很好。但是...如果我尝试在上面的一个目录(/ home / telessaude)上运行相同的命令,我会收到以下错误:

telessaude@ubuntu:~$ gunicorn -w 2 -b 0.0.0.0:8000 telessaude.wsgi_dev:application --reload --timeout 900
[2017-03-22 16:39:28 +0000] [10405] [INFO] Starting gunicorn 19.6.0
[2017-03-22 16:39:28 +0000] [10405] [INFO] Listening at: http://0.0.0.0:8000 (10405)
[2017-03-22 16:39:28 +0000] [10405] [INFO] Using worker: sync
[2017-03-22 16:39:28 +0000] [10410] [INFO] Booting worker with pid: 10410
[2017-03-22 16:39:28 +0000] [10410] [ERROR] Exception in worker process
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/gunicorn/arbiter.py", line 557, in spawn_worker
    worker.init_process()
  File "/usr/local/lib/python2.7/dist-packages/gunicorn/workers/base.py", line 126, in init_process
    self.load_wsgi()
  File "/usr/local/lib/python2.7/dist-packages/gunicorn/workers/base.py", line 136, in load_wsgi
    self.wsgi = self.app.wsgi()
  File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/base.py", line 67, in wsgi
    self.callable = self.load()
  File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/wsgiapp.py", line 65, in load
    return self.load_wsgiapp()
  File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
    return util.import_app(self.app_uri)
  File "/usr/local/lib/python2.7/dist-packages/gunicorn/util.py", line 357, in import_app
    __import__(module)
ImportError: No module named telessaude.wsgi_dev

我还尝试使用

在我的主文件夹中运行gunicorn

gunicorn -w 2 -b 0.0.0.0:8000 telessaude_branch_master.telessaude.wsgi_dev:application --reload --timeout 900

gunicorn -w 2 -b 0.0.0.0:8000 /home/telessaude/telessaude_branch_master/telessaude.wsgi_dev:application --reload --timeout 900

但它们都没有奏效。谁能告诉我如何解决这个问题?我需要从任何文件夹中运行gunicorn,因为我必须将它添加为"命令"主管的参数。

我没有使用虚拟环境。

2 个答案:

答案 0 :(得分:31)

在执行命令之前,您可以使用Gunicorn的chdir标志更改为项目目录。

gunicorn -w 2 -b 0.0.0.0:8000 --chdir /home/telessaude/telessaude_branch_master telessaude.wsgi_dev:application --reload --timeout 900

答案 1 :(得分:1)

您应将django应用添加到Python路径。

在最新的gunicorn中,您可以尝试以下操作:

如果django项目的根路径为/usr/local/src/djangoapp/

settings.py路径将默认为/usr/local/src/djangoapp/djangoapp/settings.py

gunicorn \
-c /usr/local/src/djangoapp/gunicorn_config.py \
--env DJANGO_SETTINGS_MODULE=djangoapp.settings \
--pythonpath '/usr/local/src/djangoapp' \
djangoapp.wsgi:application
  • -c 配置文件路径
  • django项目中settings.py的
  • -env 模块路径
  • -pythonpath 将您的项目路径添加到Python路径settings.html#pythonpath

--env--pythonpath是必需的。

相对路径也可以!