首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django Gevent集成

Django Gevent集成
EN

Stack Overflow用户
提问于 2013-02-22 01:24:52
回答 1查看 1.5K关注 0票数 1

如何将Gevent与Django框架集成,在Settings.py和wsgi.py文件中必须修改哪些设置才能进行集成。

我想从Django启动gevent http服务器(端口8000)和gevent web套接字服务器(端口9000)。

EN

回答 1

Stack Overflow用户

发布于 2013-02-22 05:15:50

最简单的方法是使用Gunicorn,并告诉它使用gevent worker类。Gunicorn文档相当不错。对于Django 1.4或更高版本,启动Gunicorn的推荐方法是简单地调用WSGI接口,如下所示:

代码语言:javascript
复制
gunicorn --worker-class gevent wsgi:application

如果您不关心Gunicorn的所有优秀特性(例如,无停机升级的优雅重启),您可以直接使用gevent wsgi服务器。我自己这样做是为了给那些在升级过程中可能会停机一段时间的非关键网站节省一些内存。这是我的"run_gevent.py“文件,应该很容易理解:

代码语言:javascript
复制
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)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15008545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档