"我可以同时使用uwsgi + (tornado,gevent等)吗?"

2024-04-28 10:11:57 发布

您现在位置:Python中文网/ 问答频道 /正文

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

现在我在一个“等待页面”中这样做,当jquery每隔5秒询问是否所有结果都准备好时,celery会访问webservices,因此当准备就绪时重定向到results页面。在

我想做的是不要使用这个“等待页面”,我想在结果提交时实时提供结果页面,并且我想让它遵循最佳实践,我的意思是我不想jquery每X秒获取结果来填充表。在

我想一些基于协同程序的python库可以帮助我解决这个问题,但是我想先了解一下您的经验,并看到一些示例,我很困惑,因为这个项目的这一部分是设计为异步运行的,我的意思是,使用带有芹菜和弦的web服务,但不是为实时发送信息而设计的应用服务器。在

实际架构: python2.7、django 1.3、postgresql9、cellery 3+redis、uwsgi、nginx都托管在aws上。在

提前谢谢你。在


Tags: 项目django用户web信息网站service页面
2条回答

我不知道uWSGI+gevent,但是你可以在uWSGI中使用tornado。Tornado基本上在中为您提供内置的WSGI支持龙卷风.wsgi.wsgi容器模块使其与其他WSGI服务器(如uWSGI和古尼康。但是这取决于您的使用情况,我认为在同步服务器(如uWSGI)中使用异步框架不是一个好主意。龙卷风有这个警告。在

^{bq}$

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

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

相关问题 更多 >