当前位置: 首页 > 面试题库 >

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

太叔京
2023-03-14
问题内容

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

谢谢。


问题答案:

这是我使用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用于服务器。但这对我来说很好。



 类似资料:
  • 本文向大家介绍python基础知识小结之集合,包括了python基础知识小结之集合的使用技巧和注意事项,需要的朋友参考一下 集合 特点:集合对象是一组无序排列的可哈希的值:集合成员可以做字典的键,与列表和元组不同,集合无法通过数字进行索引。此外,集合中的元素不能重复。  定义 应用:去重 常用操作 集合支持一系列标准操作,包括并集|、交集&、差集-和对称差集^ 子集< <=及超集> >= 增删,清

  • 本文向大家介绍C++基础知识总结,包括了C++基础知识总结的使用技巧和注意事项,需要的朋友参考一下 不管是自我定位太高,还是职位层次太低,系统复习了一遍很久没有摸过的C++总是有好处的。总结如下: 一、new和malloc的区别 1、new和delete配对,释放数组需要用delete[]。new和delete实际上调用了malloc和free,另外调用了类的构造函数和析构函数。 2、malloc

  • 本文向大家介绍jQuery基础知识小结,包括了jQuery基础知识小结的使用技巧和注意事项,需要的朋友参考一下 1、基础  jquery对象集:   $():jquery对象集合   获取jquery对象集中的元素:    使用索引获取包装器中的javascript元素:var temp = $('img[alt]')[0]    使用jquery的get方法获取jquery对象集中的javasc

  • 使用此文档了解 After Effects 中的合成基础知识 关于合成 合成是影片的框架。每个合成均有其自己的时间轴。典型合成包括代表诸如视频和音频素材项目、动画文本和矢量图形、静止图像以及光之类的组件的多个图层。您可通过创建素材项目是源的图层,将素材项目添加到合成中。然后在合成内,在空间和时间方面安排各个图层,并使用透明度功能进行合成来确定底层图层的哪些部分将穿过堆叠在其上的图层进行显示。(请参

  • 对前端 HTML、CSS、JS 等基础知识做的整理和小结,以及一些相关面试问题的总结。ES5中基本数据类型有五种。

  • 主要内容:Django的历史,Django的设计理念,Django的优势Django是一个高层次的 Python Web 框架,它是一个鼓励快速开发和干净,实用的框架设计。Django可以更容易地快速构建更好的Web应用程序,并且它使用更少的代码。 注意 − Django是Django 软件基金会的一个注册商标,并在BSD许可证授权。 Django的历史 2003 − 开始时,由Adrian Holovaty和Simon Willison 将其作为劳伦斯杂志 - 世界