0

好的,我正在尝试使用 gunicorn 运行 django 应用程序,但似乎没有任何效果,我的应用程序文件夹结构如下所示:

/home/web/app/
    appenv/
    dtest/
    static/
    db.sqlite3
    manage.py

appenv包含我的虚拟环境,在dtest 中我有文件wsgi.py,其中包含:

import os
import sys

sys.path.append('/home/web/app/dtest')
sys.path.append('/home/web/app')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "dtest.settings")

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

然后我尝试像这样运行 gunicorn:

gunicorn wsgi.py -b 0.0.0.0:9999

但我得到了错误:

[2018-10-09 17:37:46 -0500] [15177] [INFO] Starting gunicorn 19.9.0
[2018-10-09 17:37:46 -0500] [15177] [INFO] Listening at: http://0.0.0.0:9999 (15177)
[2018-10-09 17:37:46 -0500] [15177] [INFO] Using worker: sync
[2018-10-09 17:37:46 -0500] [15180] [INFO] Booting worker with pid: 15180
[2018-10-09 22:37:49 +0000] [15180] [ERROR] Exception in worker process
Traceback (most recent call last):
  File "<frozen importlib._bootstrap>", line 2218, in _find_and_load_unlocked
AttributeError: 'module' object has no attribute '__path__'

然后gunicorn死了......它一定是我的模块被导入的方式,但我不确定它到底是什么(也许正在修改sys.modules?)

我在dietpi(debian 8 Jessie)上使用Django 2.0.9版、gunicorn(19.9.0版)、Python 3.4.2。

[顺便说一句,运行 python manage.py runserver 工作正常]

4

2 回答 2

1

好的,这是一个愚蠢的错误,这是我开始 gunicorn 的方式,这个可以解决问题:

gunicorn wsgi:application -b 127.0.0.1:9999

(我错过了 :application 部分)

于 2018-10-11T01:24:26.297 回答
0

我最近遇到了gunicorncannot start问题。

用了好久才发现是运行用户对日志文件和pid文件没有写权限造成的

希望它可以帮助谁犯了类似的错误。

于 2019-12-18T02:21:03.500 回答