python - 具有多个流的网络套接字,如果执行时间超过间隔时间,所有代码都会运行吗?
问题描述
我在 Python 中设置了一个 Web 套接字来接收多个数据流。它每分钟从多个流中接收数据。
stream_urls = [stream_url1, stream_url2, etc.]
async with websockets.connect(stream_urls,ping_timeout=None) as sock:
while True:
res = await asyncio.wait_for(sock.recv(),timeout=reply_timeout)
res = json.loads(res)
# code runs here on data in res
每次接收到数据时都会执行代码,但如果至少有一次该代码运行时间超过一分钟,会发生什么情况?
例如,在 14:05 时从 stream_url1 接收到数据,代码需要 70 秒才能运行(甚至多个接收到的流总共需要超过 60 秒),那么在那一分钟(14:05),代码将运行stream_url2,即它是否全部排队,直到所有内容都执行完毕,或者它只是跳到 14:06 的数据并且代码不会为 14:05 的 stream_url2 数据运行?
到目前为止,我猜测我需要在线程中执行此代码,以便它每分钟执行每个 stream_url 的所有预期代码,但在我的应用程序中,我最初认为这可能没有必要,因为它只需要一分钟以上非常偶尔,所以不会有很大的积压。
如果有人能澄清使用这样的套接字的行为,以及如果代码运行时间超过一分钟,它是否会在每分钟为所有流实际执行所有代码,那就太好了。
解决方案
推荐阅读
- r - 如何编写带有所需参数的 purrr 循环
- html - 问题:mat-form-field 保持在同一行
- python - Django startproject 的问题
- firebase - 当前登录的众多用户中,currentUser 将返回哪个用户?
- javascript - 我怎样才能完成对角线这些div的动画?
- networking - 有没有办法通过端口转发启动 Minecraft 服务器?
- c++ - 如果我传递一个右值,为什么在 std::move 中需要 static_cast 和 std::remove_reference?
- python - UnicodeDecodeError:“utf-8”编解码器无法解码位置 5 中的字节 0xa0:无效的起始字节
- android - 从 usb-serial-for-android 中的示例代码向/从 Arduino uno 发送和接收错误数据
- c++ - 有没有什么方法可以让 new 改变一个变量?