[英]Django Gunicorn wsgi
嗨,我正在嘗試將我的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選擇該文件?
你的django_settings
不正確。 django_settings
應該是python模塊導入的形式,可以從你設置的Python路徑導入。 所以
pythonpath = '/home/code/po'
django_settings = 'po.settings'
為了詳細說明, application
是默認變量(應該是WSGI應用程序對象),gunicorn將嘗試從您提供的Python模塊導入。
所以以另一種方式思考它。 假設您正在嘗試運行簡單的Flask wsgi應用程序。 實際的WSGI應用程序被定義為application
並且位於/home/code/views.py
。 然后以下將手動開始用gunicorn服務它
export PYTHONPATH=/home/code
gunicorn -w 2 views:application
所以視圖模塊中的變量應用程序。 您可以閱讀Django如何為您提供應用程序對象 。
可能是你需要在po.wsgi
模塊本身指向gunicorn。 從目前為止提供的信息來看,這有點難以辨別。 如果該模塊是正確創建的,它應該包含一個名為application
的變量
檢查您安裝的另一個軟件包是否已包含名為wsgi.py的文件。 (gevent確實。)如果是這樣,可能是加載了錯誤的wsgi.py文件。 嘗試將您的wsgi.py文件重命名為其他內容(例如app_wsgi.py)並添加運行您的應用程序
gunicorn -c /home/code/gunicorn_config.py app_wsgi
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.