python - 我可以同时使用 uwsgi + (tornado, gevent, etc) 吗?

标签 python django tornado uwsgi

为什么?因为我有一个 django 项目,它从用户那里捕获数据并使用许多 web 服务向用户显示结果以便比较信息,就像聚合网站通过航空公司 web 服务搜索机票并实时显示结果以便比较机票.

现在我在“等待页面”中执行此操作,其中 celery 访问 Web 服务,而 jquery 每 5 秒询问一次所有结果是否已准备就绪,因此当准备就绪时重定向到结果页面。

我想做的是不使用这个“等待页面”,我想在结果到来时实时提供结果页面,我想让它遵循最佳实践,我的意思是我不想jquery 每 X 秒获取一次结果以提供表格。

我认为一些基于协程的 python 库可以帮助我解决这个问题,但我想先了解更多关于您的经验并查看一些示例,我很困惑,因为项目的这一部分被设计为异步运行,我的意思是,使用 celery-chords 使用网络服务,但并非设计用于通过应用服务器实时发送信息。

实际架构: python 2.7、django 1.3、postgresql 9、celery 3 + redis、uwsgi、nginx,全部托管在 aws 上。

提前致谢。

最佳答案

uWSGI+gevent 是一个可靠的组合,虽然目前没有办法用 tornado api 运行 uWSGI(并且由于 uWSGI 在 1.9 中放弃了对基于回调的方法的支持,我认为我们永远不会看到该组合起作用)。

在开始使用 gevent 之前,您需要解决的问题是确保您的所有部分都是 gevent 友好的(redis 和 celery 都可以,您需要检查您的数据库适配器)。之后只需将 --gevent 添加到您的 uWSGI 实例,其中是每个工作人员的最大并发请求数。

关于python - 我可以同时使用 uwsgi + (tornado, gevent, etc) 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15225320/

相关文章:

django - 重命名 models.py 中主键的字段

python - Tornado 'Hello World' 错误

python - Django: AttributeError 表单没有属性 'is_valid'

python - 是否有办法通过 python 绑定(bind)为 Zookeeper 节点提供 NULL ACL?

python - 跨组的 Pyspark 示例数据框

sql - 在单个查询中获取 Django 模型中的 ManyToMany 字段的优化方式

python - 如何删除行 [DEBUG] pip.vcs : Registered VCS backend: *** from log file

python - 更新子类中的父字典

python - 如何测试 Tornado 处理程序是否正确调用另一个 API?

tornado - 优雅地处理 Tornado 应用程序中的应用程序异常