【发布时间】:2012-09-09 11:16:51
【问题描述】:
您好,我正在尝试将我的 django 1.4.1 应用程序与 Gunicorn 0.14.6 集成。我像这样从命令行启动 gunicorn 服务器 -
gunicorn -c /home/code/gunicorn_config.py
我得到了这个回溯 -
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/gunicorn/arbiter.py", line 459, in spawn_worker
worker.init_process()
File "/usr/local/lib/python2.7/dist-packages/gunicorn/workers/base.py", line 99, in init_process
self.wsgi = self.app.wsgi()
File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/base.py", line 101, in wsgi
self.callable = self.load()
File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/wsgiapp.py", line 24, in load
return util.import_app(self.app_uri)
File "/usr/local/lib/python2.7/dist-packages/gunicorn/util.py", line 292, in import_app
app = eval(obj, mod.__dict__)
File "<string>", line 1, in <module>
NameError: name 'application' is not defined
我哪里出错了?这是什么application 变量以及我需要在哪里修改它?
另外,由于我使用的是 Django1.4.1,我的项目中已经有一个 wsgi.py 文件,我需要更改它吗?
更新:这是我的 gunicorn_config.py 文件内容 -
import os
import sys
import multiprocessing
def app_path():
sys.path.append('/home/code/po/')
sys.path.append('/home/code/po/ball/')
return
def num_cpus():
cpus = 0
try:
cpus = os.sysconf("SC_NPROCESSORS_ONLN")
except:
cpus = multiprocessing.cpu_count()
if cpus: return cpus
else: return 3
#defining the behavior of gunicorn
app_path()
bind = "127.0.0.1:8080"
workers = num_cpus()*2 + 1
debug = True
daemon = False
accesslog = '/home/code/logs/guni_access.log'
errorlog = '/home/code/logs/guni_error.log'
loglevel = 'debug'
django_settings = '/home/code/po/po/'
pythonpath = '/home/code/po/'
@moopet - 我什至不认为 wsgi.py 文件被调用,我如何让 gunicorn 选择那个文件?
【问题讨论】:
-
你也可以添加 gunicorn_config.py 文件。看来您的 wsgi.py 路径不对。
-
把wsgi.py文件粘贴进去。应该是定义应用的地方
-
@moopet - 我什至不认为
wsgi.py文件被调用,我如何让 gunicorn 选择那个文件? -
如果它是一个 Django 应用程序,你可以用
gunicorn_django开始它,而不是gunicorn。 -
使用
gunicorn_django也无济于事。另外,我在某处读到,当有人使用 Django1.4.x 时,最好使用gunicorn。
标签: python django wsgi gunicorn