【问题标题】:how to combine django plus gevent the basics?如何结合 django 和 gevent 的基础知识?
【发布时间】:2012-06-13 10:35:20
【问题描述】:

经过大量搜索和谷歌搜索,我要回到井边。 我有 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)。

谢谢。

【问题讨论】:

    标签: python django comet gevent


    【解决方案1】:

    以下是我使用 gevent + 猴子补丁运行 Django 的方法:

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

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

    最后,我已将前端网络服务器配置为将请求代理到端口 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 作为你的服务器。但这对我来说很好用。

    【讨论】:

    • 感谢您的脚本,这是一个很大的帮助。但是,我已经尝试过了,我想我错过了一些东西。我从默认的 django 1.4 项目开始。我正在使用 %python manage.py runserver 0.0.0.0:8000 启动服务器。如何使用您提供的脚本?
    • 您不确定它的哪一部分用途?
    • 很抱歉问了些愚蠢的问题......当我使用 manage.py 启动时,如何让这个脚本运行?我现在正在查看 django wsgi 文档,它提到了 wsgi.py - 这是你的脚本应该去的地方吗?
    • 当我运行上面的脚本时,我得到这个 raise ImportError("Settings cannot be importing, because environment variable %s is undefined." % ENVIRONMENT_VARIABLE) 所以我添加了这个: from django.conf import settings Now我明白了: ImportError:无法导入设置,因为环境变量 DJANGO_SETTINGS_MODULE 未定义。
    • 我没有用这个脚本的内容替换 wsgi.py,我现在得到了这个:AttributeError: 'Settings' object has no attribute 'file'
    猜你喜欢
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-08
    • 1970-01-01
    • 2014-04-16
    • 2018-05-25
    相关资源
    最近更新 更多