Python Webserver:如何异步处理请求
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python Webserver:如何异步处理请求,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1583字,纯文字阅读大概需要3分钟。
内容图文
![Python Webserver:如何异步处理请求](/upload/InfoBanner/zyjiaocheng/689/0c41f6ce6357454baaa12f549b3047e0.jpg)
我需要创建一个将执行以下操作的python中间件:
a)接受来自多个客户端的http get / post请求.
b)修改这些请求并将其分发到后端远程应用程序(通过套接字通信).我对该远程应用程序没有任何控制权.
c)从后端应用程序接收处理后的结果,并将这些结果返回给发出请求的客户端.
现在,客户期望同步的请求/响应方案.但是后端应用程序不会同步返回结果.也就是说,某些请求比其他请求花费更长的时间.因此,
客户端1:发送http请求C1->得到响应R1
客户端2:发送http请求C2->得到响应R2
客户端3:发送http请求C3->得到回应R3
Python中间件按某种顺序接收它们:C2,C3,C1.按此顺序将它们调度到后端(作为非HTTP消息).后端以混合顺序R1,R3,R2的结果进行响应. Python中间件应将这些响应打包回http响应对象,并将响应发送回相关客户端.
是否有任何示例代码可以对这种行为进行编程.似乎有20种不同的python Web框架,我对于哪种方案最适合这种情况感到困惑(我希望尽可能轻量级……我会认为Django太重了……我尝试了bottle ,但我不确定如何针对这种情况进行编程).
===============================================
更新(基于下面的讨论):请求具有请求ID.响应具有响应ID(应与它们对应的请求ID相匹配).中间件和远程后端应用程序之间只有一个套接字连接.尽管我们可以维护{request_id:ip_address}字典,但问题是如何为正确的客户端构造HTTP响应对象.我认为,线程可以解决每个线程都维护自己的响应对象的问题.
解决方法:
螺丝框架.这正是070??00的任务.此模块允许基于事件的网络编程:给定一组套接字,当其中任何一个数据就绪时,它将回调给定的处理程序.这样,线程就不必只是呆滞地等待一个套接字上的数据到达并将其痛苦地传递给另一个线程.您必须自己实现http处理,但是可以找到一些示例.另外,您可以使用uwsgi的异步功能,该功能允许您的应用程序与现有的Web服务器集成,但默认情况下不与asyncore集成-尽管并不难使其正常工作.取决于具体需求.
内容总结
以上是互联网集市为您收集整理的Python Webserver:如何异步处理请求全部内容,希望文章能够帮你解决Python Webserver:如何异步处理请求所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。