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

发布于 2021-01-29 17:58:30

经过大量搜索和谷歌搜索后,我回到井上。我有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/zh/1.4/intro/tutorial01/非常好
因此,现在我需要了解要进行哪些更改才能使用gevent并能够处理异步事件。我确信这并不困难-
我只需要一个了解它的人来解释做什么以及正在发生的事情(例如monkey_patch)。

谢谢。

关注者
0
被浏览
41
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    这是我使用gevent + Monkey patching运行Django的方法:

    1. 我已经修改了,manage.py所以第一行(在shebang之后)是from gevent import monkey; monkey.patch_all()

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

    最后,我将前端Web服务器配置为代理对端口1234run_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用于服务器。但这对我来说很好。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看