经过大量搜索和谷歌搜索,我要回到井边。 我有 Django 1.4 并且正在寻找一个体面的 working 示例来弄清楚让 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 手动获取它。该示例运行,但在浏览器连接时生成这些错误。
这些内容提供信息,但不提供基本答案。 Need help understanding Comet in Python (with Django) https://bitbucket.org/denis/gevent/src/tip/examples/webchat/chat/views.py http://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 并能够处理异步事件。我相信这并不难——我只需要一个理解它的人来解释要做什么以及正在发生的事情(比如monkey_patch)。
谢谢。
最佳答案
以下是我使用 gevent + 猴子补丁运行 Django 的方法:
我已经修改了
manage.py
所以第一行(shebang 之后)是from gevent import monkey; monkey.patch_all()
我添加了一个新的
run_production_server
脚本(见下文)。
最后,我已将前端网络服务器配置为将请求代理到端口 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()
有些人可能会提示这个服务器不够“网络规模”。我怀疑他们能否提供基准来证明这一点,但如果您担心您也可以为您的服务器使用 gunicorn
或 uwsgi
。但这对我来说很好用。
关于python - 如何结合 django 和 gevent 的基础知识?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10964571/