好吧,我正在尝试使用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效果很好]
答案 0 :(得分:0)
好吧,这是一个愚蠢的错误,这是我开始使用“ gunicorn”的方式,这可以解决问题:
gunicorn wsgi:application -b 127.0.0.1:9999
(我缺少:application部分)
答案 1 :(得分:0)
我最近遇到了gunicorn cannot start
问题。
花了相当长的时间后,我发现这是由于运行中的用户没有对日志文件和pid文件的写权限引起的。
希望它可以帮助犯下类似错误的人。