如何结合django和gevent的基础知识?

Ter*_*ott 18 python django comet gevent

经过大量搜索和谷歌搜索后,我回到了井边.我有Django 1.4,我正在寻找一个体面的工作示例来弄清楚让Django与gevent一起工作.我喜欢Django框架,但我需要它来处理长轮询.我已经有一个使用gevent的工作服务器,它可以处理长轮询请求,也可以通过http以大约10帧/秒的速度进行图像流传输.我想使用Django中的所有好东西为这部分提供框架.

有很多例子,但不幸的是,这些都没有开箱即用!有一个工作的例子可以帮助理解这两件事如何协同工作.

这是我到目前为止发现的问题和问题:

http://codysoyland.com/2011/feb/6/evented-django-part-one-socketio-and-gevent/ 问题:ImportError:无法导入设置'webchat.settings'(是否在sys.path上?) :没有名为webchat.settings的模块

https://github.com/codysoyland/django-socketio-example/blob/master/README.rst 问题:安装失败,获得gevent权限问题尝试手动从git hub获取它.该示例运行,但在浏览器连接时会生成这些错误.

这些是提供信息但不提供基本答案. 需要帮助了解Python中的Comet(使用Django) https://bitbucket.org/denis/gevent/src/tip/examples/webchat/chat/views.py http://blog.gevent.org/2009/10/10 /简单的长轮询与-的Django和GEVENT /

我希望有人可以解释(请,非常请....)是这样的:我有一个使用Django 1.4创建的基本网站 - 这里的教程https://docs.djangoproject.com/en/1.4/intro/tutorial01/很棒.所以现在我需要了解要使用gevent进行哪些更改以及能够处理异步事件.我确信这并不困难 - 我只需要一个了解它的人来解释做什么以及发生了什么(有关像monkey_patch这样的事情).

谢谢.

Dav*_*ver 22

这是我用gevent + monkey补丁运行Django的方法:

  1. 我修改manage.py了第一行(在shebang之后)from gevent import monkey; monkey.patch_all()

  2. 我添加了一个新run_production_server脚本(见下文).

最后,我已经将我的前端Web服务器配置为代理端口请求1234(run_production_server正在侦听的端口).

from gevent import monkey; monkey.patch_all()
from gevent.wsgi import WSGIServer

from django.core.management import setup_environ    
import settings
setup_environ(settings)

from django.core.handlers.wsgi import WSGIHandler as DjangoWSGIApp
application = DjangoWSGIApp()
server = WSGIServer(("127.0.0.1", 1234), application)
print "Starting server on http://127.0.0.1:1234"
server.serve_forever()
Run Code Online (Sandbox Code Playgroud)

有些人可能会抱怨这台服务器不够"网络规模".我怀疑他们是否能够提供基准来证明这一点,但是如果你担心你也可以使用gunicornuwsgi用于你的服务器.但这对我来说很好.