1
如何將Gevent與Django框架集成,在Settings.py和wsgi.py文件中必須修改哪些設置以進行集成。Django Gevent集成
我想從Django啓動gevent http server(port 8000)和gevent web socket server(port 9000)。
如何將Gevent與Django框架集成,在Settings.py和wsgi.py文件中必須修改哪些設置以進行集成。Django Gevent集成
我想從Django啓動gevent http server(port 8000)和gevent web socket server(port 9000)。
最簡單的方法是使用Gunicorn並告訴它使用gevent工人類。 Gunicorn文檔非常好。對於Django的1.4或更高版本的推薦方式啓動Gunicorn是簡單地調用WSGI界面,如下所示:
gunicorn --worker-class gevent wsgi:application
如果你不關心所有的好的特點Gunicorn的(如優雅重啓的無停機升級例如)你可以直接使用gevent wsgi服務器。我自己這樣做是爲了節省一些非關鍵網站的內存,這些網站在升級過程中可能會暫時停下來。這是我的「run_gevent.py」文件,它應該相當容易grok:
import gevent.monkey; gevent.monkey.patch_all()
import os, socket
from gevent.socket import socket as gsocket
from gevent.pywsgi import WSGIServer
from django.core.handlers.wsgi import WSGIHandler
script_dir = os.path.dirname(os.path.abspath(__file__))
pid_filename = os.path.join(script_dir, 'server.pid')
socket_filename = os.path.join(script_dir, 'server.sock')
pidfile = open(pid_filename, 'w')
pidfile.write(str(os.getpid()) + str('\n'))
pidfile.close()
server_socket = gsocket(socket.AF_UNIX, socket.SOCK_STREAM)
try:
os.remove(socket_filename)
except OSError:
pass
server_socket.bind(socket_filename)
server_socket.listen(256)
os.environ['DJANGO_SETTINGS_MODULE'] = 'project.settings'
server = WSGIServer(listener = server_socket, application = WSGIHandler(), log = None)
server.serve_forever(stop_timeout = 3)
我將該文件放在全局級別,manage.py旁邊。 – 2013-02-21 21:20:45
除非你內存非常低,否則我會推薦Gunicorn。它讓你的生活變得更輕鬆! – 2013-02-21 21:24:23