独角兽无法开始

时间:2018-10-09 22:48:25

标签: django python-3.x gunicorn python-importlib

好吧,我正在尝试使用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 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__'

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

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

[顺便说一句,运行python manage.py runserver效果很好]

2 个答案:

答案 0 :(得分:0)

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

gunicorn wsgi:application -b 127.0.0.1:9999

(我缺少:application部分)

答案 1 :(得分:0)

我最近遇到了gunicorn cannot start问题。

花了相当长的时间后,我发现这是由于运行中的用户没有对日志文件和pid文件的写权限引起的。

希望它可以帮助犯下类似错误的人。