如何结合Django加gevent的基础知识?

2024-06-06 18:15:21 发布

您现在位置:Python中文网/ 问答频道 /正文

经过多次搜索和谷歌搜索,我要回到井里。 我有Django 1.4,我正在寻找一个像样的工作示例,以找出让Django与gevent一起工作的方法。 我喜欢Django框架,但我需要它来处理长时间的投票。 我已经有一个运行中的服务器在使用gevent,它可以处理长时间的轮询请求,也可以以大约10帧/秒的速度通过http进行图像流。我想用Django的所有优点为这一部分提供一个框架。

有很多例子,但不幸的是,这些似乎都不是现成的!有一个有效的例子来理解这两件事是如何协同工作的,这将非常有帮助。

以下是我到目前为止发现的问题:

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

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

这些都是信息性的,但没有提供基本的答案。 Need help understanding Comet in Python (with Django)https://bitbucket.org/denis/gevent/src/tip/examples/webchat/chat/views.pyhttp://blog.gevent.org/2009/10/10/simpler-long-polling-with-django-and-gevent/

我希望有人能解释(请,漂亮的请……)这是: 我有一个使用Django 1.4创建的基本站点-这里的教程https://docs.djangoproject.com/en/1.4/intro/tutorial01/非常好。 因此,现在我需要了解为了使用gevent并能够处理异步事件,需要做哪些更改。我确信这并不难——我只需要一个理解的人来解释该做什么以及正在发生的事情(比如猴子补丁)。

谢谢。


Tags: anddjangohttpscom框架http示例settings
1条回答
网友
1楼 · 发布于 2024-06-06 18:15:21

下面是我如何使用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()

有些人可能会抱怨这个服务器不够“网络规模”。我怀疑他们是否能够提供基准来证明这一点,但如果您担心,您也可以为服务器使用gunicornuwsgi。但这对我很好。

相关问题 更多 >