python - 为什么 aiohttp 需要 await 来获取 body?
问题描述
我发现aiohttp
服务器应该使用await
关键字来获取请求正文
async def handler(request):
body = await request.json(). # or text(), read()
我认为当handler
被调用时,请求主体已经在服务器端内存中,我认为它不是 I/O 密集型工作,需要异步操作。
有什么遗漏的地方吗?
解决方案
handler
对于非常大的请求消息正文,您可能在调用时没有收到完整的正文。HTTP1/1 声明服务器可能会在请求结束之前回答(来自 RFC 2616):
发送消息正文的 HTTP/1.1(或更高版本)客户端应该在传输请求时监视网络连接的错误状态。如果客户端看到错误状态,它应该立即停止传输正文。
因此,如果您在收到整个请求消息体之前不接受请求(例如,如果令牌无效,则返回 401 未授权),例如,您可以立即回复 4xx 客户端错误代码。
推荐阅读
- visual-studio-code - 从 WSL 环境访问非路径 WSLENV 变量
- cocoapods - Nativescript NativeAPI 找不到 NSURL、NSURLRequest、NSObject
- java - 类型 T 不是有界参数的有效替代品 `
> - xml - 我的 xml 正在将所有文本值设置为“”的节点更改为没有文本值,我该如何阻止它?
- c++ - 给定总和的子数组
- ios - 插入和更新核心数据对象的有效方法 [2020]
- javascript - 无法在 php-ajax-live-search-with-multiple-value 中显示错误消息“未找到结果”
- javascript - 单击时如何使用Javascript绘制一个新的移动球?
- c# - 代码合同机制是否已经死亡并且没有未来?
- php - 如何获取每日记录和总结