- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在 Python 3.6 中实现简单的 asyncio HTTP2 服务器和客户端。它需要实现流量控制。我在客户端使用函数 self.outbound_flow_control_window=2048 将流量控制窗口设置为 2048 字节,在客户端发送 2048 字节的数据 block 后,服务器不处理和确认接收到的数据,因此客户端可以发送另一 block 2048字节
我已经尝试过这些功能,self.conn.acknowledge_received_data(2048, event.stream_id)self.conn.increment_flow_control_window(2048, event.stream_id)
elif isinstance(event, DataReceived):
self.receive_data(event.data, event.stream_id)
self.conn.acknowledge_received_data(2048, event.stream_id)
self.conn.increment_flow_control_window(2048, event.stream_id)
从客户端接收到数据(2048 字节)后,我希望服务器确认并更新客户端它现在可以发送更多数据,但客户端上的 flow_control_windows 仍然为 0,即使在接收到窗口更新帧之后也是如此
最佳答案
你有没有流量控制的示例服务器吗?如果不这样做。
https://github.com/python-hyper/hyper-h2/blob/master/examples/asyncio/asyncio-server.py
您正在混合使用手动和自动流量控制。重读此处的自动流量控制部分并使用自动控制。
https://python-hyper.org/projects/h2/en/stable/advanced-usage.html
This automatic strategy is built around a single method: acknowledge_received_data. This method flags to the connection object that your application has dealt with a certain number of flow controlled bytes, and that the window should be incremented in some way. Whenever your application has “processed” some received bytes, this method should be called to signal that they have been processed.
The key difference between this method and increment_flow_control_window is that the method acknowledge_received_data does not guarantee that it will emit a WINDOW_UPDATE frame, and if it does it will not necessarily emit them for only the stream or only the frame. Instead, the WINDOW_UPDATE frames will be coalesced: they will be emitted only when a certain number of bytes have been freed up.
现在看一下使用流控制的 curio 示例。如果您从服务器接收到窗口更新事件,您可能没有正确处理流 ID 0。
https://github.com/python-hyper/hyper-h2/blob/master/examples/curio/curio-server.py
特别是发送数据函数:
while True:
while not self.conn.local_flow_control_window(stream_id):
await self.wait_for_flow_control(stream_id)
chunk_size = min(
self.conn.local_flow_control_window(stream_id),
READ_CHUNK_SIZE,
)
data = fileobj.read(chunk_size)
keep_reading = (len(data) == chunk_size)
self.conn.send_data(stream_id, data, not keep_reading)
await self.sock.sendall(self.conn.data_to_send())
如果你想发送 4k 字节你在流量控制窗口等待,发送你的 2k 字节然后在流量控制窗口再次等待。
如果你正在接收窗口更新,你应该有这样的代码
async def window_updated(self, event):
"""
Unblock streams waiting on flow control, if needed.
"""
stream_id = event.stream_id
if stream_id and stream_id in self.flow_control_events:
evt = self.flow_control_events.pop(stream_id)
await evt.set()
elif not stream_id:
# Need to keep a real list here to use only the events present at
# this time.
blocked_streams = list(self.flow_control_events.keys())
for stream_id in blocked_streams:
event = self.flow_control_events.pop(stream_id)
await event.set()
return
关于python-asyncio - 我无法在 HTTP2 实现中更新流量控制窗口,因此客户端无法发送其余数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54616728/
有没有其他方法可以直接使用 terraform 启用这些规则,而无需在 GCP 中创建单独的防火墙规则,然后将标签附加到计算引擎 目前我正在这样做 resource "google_compu
全民国家安全日活动 免费抽随机话费、流量 微信打开链接进入活动 下拉页面点击【我要抽奖】进去完成两个任务获得两次抽奖机会 可抽2-10元话费以及流量 抽奖非必中 仅限移动用户参与 活动期间内每日
随着人们的紧凑生活,从事互联网行业的人大多都把一天的时间安排的满满的,这用户忙碌的时候,根本无心去关注你的推广,只有抓住了用户零零碎碎的时间对其进行推广,同时他也能打发无聊的时间,这样的效果就非常轻
我建立了一个库来做 IGMP 的东西。现在,愚蠢的是,我的图书馆还进行了存在监控以确保其他人仍然是该组的一部分。 IGMP 在较低级别做完全相同的事情。分开消息,轮询路由器它仍然是同一组的一部分,整个
我经营一个具有广告集成功能的媒体网站。最近,我们发现很多人滥用这一点,通过在上传内容上进行流量交换来获取虚假收入。最流行的可能是使用 HitLeap Viewer 应用程序的 HitLeap。 我很好
上下文: 所以我在 AKS 集群中有一个测试脚本;此脚本使用 Azure Active Directory 中的用户的单点登录功能登录到站点。 测试脚本位于集群 A 中,站点位于集群 B 中。还为集群
是否可以指示 Fiddler 仅显示定向到特定主机名的流量?也就是说Fiddler流量可以针对Host进行过滤吗? 最佳答案 请参阅此屏幕截图。位于屏幕的右上方 关于fiddler - 过滤 Fidd
这个问题在这里已经有了答案: Android 8: Cleartext HTTP traffic not permitted (36 个回答) 2年前关闭。 我正在从事一个项目,但我被困在登录/注册页
我有一个 Android VOIP 应用程序。由于某些网络会阻止 VOIP 流量,因此我想找到一些绕过阻止的方法。我认为 VPN 可以做到这一点,但没有任何 VPN 解决方案可以轻松实现。使用 And
我构建了使用 SignalR 的服务器和客户端代码。该网站运行良好,但我在任何浏览器(chrome、IE、Firefox)中都看不到网络流量。我知道网络流量在那里,因为该网站正在运行。 有没有办法在浏
我实现了一个自制的嗅探器(基于 winpcap),并尝试在浏览 HTTPS 网站(gmail 和 facebook)时使用它来嗅探 TCP 连接上的端口 443,但我的代码无法检测到任何流量。 我研究
是否可以使用 Android 手机收集同一小区内手机的 IMEI 或唯一手机 ID?可能已经有一些 hack 可以使用 osmocom ...我正在寻找的是一个易于工作的解决方案来扫描交通(通过计算汽
此 Android 代码是否是在通话期间测试 http 网络可用性的正确方法,或者它是否排除了应包含的网络,反之亦然: public boolean isOnline() { Telephon
我需要能够加密从 Web 服务器到数据库服务器的 MySQL 流量。我知道如何根据 my.cnf 中的服务器和客户端设置将 MySQL 设置为使用 SSL,但是,这需要使用 PHP 中的 mysql_
我想查看所有传出 USB 的流量,并可能根据内容策略阻止进出 USB 的数据交易。这将如何完成?有什么方法可以在 C# 中实现此目的,还是它更像是 C++ 类型的问题? 最佳答案 您可以使用类似 Cr
我需要捕获进程进行的 TCP 通信。但是,我不能只运行该进程,查找其 PID,然后捕获。我需要获取启动后立即发生的通信。 它显然是通过未知端口(不是 80)向另一个进程发出 JSON 请求,该进程注册
如果我有一个名为 www.testsite.com 的页面,并且我使用 url 中的查询字符串链接到该页面,是否可以以某种方式将相同的查询字符串附加到所有传出链接/流量? 例如,假设我像这样链接到该页
我在我的机器上运行本地 HTTP 代理服务器并执行一些日志记录。我也想记录 SSL 流量。为此,我运行了另一个用 Python 编写的代理服务器,它充当 SSL 服务器,带有我的自签名证书,HTTP
我正在编写一个应该检测 VPN 流量的程序。据我了解这个主题,似乎隧道协议(protocol)的检测就像防火墙规则一样容易,使用它们的专用端口: PPTP: 端口 1723/TCP OpenVPN:端
所以,情况是:我想知道程序将请求发送到什么路径。使用 Wireshark,我只能知道它发送的是 https 请求和相应的域,但不知道路径。 我认为即使不破解程序也可以至少检查出站 https 流量。
我是一名优秀的程序员,十分优秀!