- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 asyncio
建立 TCP 连接:
reader, writer = await asyncio.open_connection(addr)
我需要保持连接。为此,我存储了一对(reader,writer)
以供将来通信。但是,我不知道 reader
什么时候有数据要读取。我能用它做什么?当读者准备好时,有没有办法制作处理程序?
最佳答案
However, I don't know when
reader
has data to read. What can I do with it?
了解读取器流何时有数据要读取的明显方法是等待
它:
data = await reader.read(1024)
这将立即返回数据,或者暂停当前协程,允许其他协程取得进展,并且仅在读取器有一些数据要读取时才恢复此协程。您可以编写一个执行通信的协程,并存储 task,而不是存储读取器/写入器以供将来通信。驱动它的因素:
async def communicate():
reader, writer = await asyncio.open_connection(addr)
# an echo server
while True:
line = await reader.readline()
if not line:
break
writer.write(line)
await writer.drain() # backpressure, see https://tinyurl.com./hqylfay
task = loop.create_task(communicate())
# the task can itself be awaited, canceled, etc.
asyncio 背后的想法 stream API就是编写这样看起来顺序的代码,将其留给 asyncio 来处理文件描述符的轮询和任务的调度。您可以使用类似 asyncio.gather
的组合器和 asyncio.wait
并行运行数千个这样的轻量级协程。
Is there a way to make a handler, when the reader is ready?
如果您需要基于回调的 API,您可能应该使用较低级别的 transports and protocols反而。但是,如果您已经在使用流,但偶尔仍需要普通回调,则可以通过获取 Future
来获取它。 :
future = asyncio.ensure_future(reader.read(1024))
future.add_done_callback(your_callback)
Future 的作用相当于协程处理程序。一次read
将不再阻塞,完成回调将由事件循环使用单个参数 future 调用。 future 已经结束了,它的result()
方法可用于检索接收到的数据或异常。
(以上内容适用于 asyncio 中的任何协程或 future 兼容对象,而不仅仅是 StreamReader
方法。)
关于python - 如何知道 StreamReader 何时准备就绪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50237676/
在我的Kubernetes设置上,我有2个服务-A和B. 服务B取决于完全启动服务A。 我现在想在服务B的Pod中设置一个TCP就绪探针,以便他们测试服务A的Pod是否已完全运行。 Service B
我有一个类(LoadClass),它在页面加载时初始化,并在我的例子中打开一个 SQLite 数据库并执行几个查询。现在我希望其他组件仅在 LoadClass 先前完成加载数据库时执行代码,但这必须随
我有两个应用程序 - app1 和 app2 ,其中 app1 是 config server保存 的配置app2 .我已经定义了 /readiness端点在 app1 并且需要等到它返回 OK启动
我的页面中有一个 iframe,我正在向该 iframe 提交我的表单,因此在 iframe 完成加载后,我需要在每次 iframe 完成加载内容时触发一个函数。 我试过使用 ready 和 load
我正在尝试制作一款游戏。玩家单击“就绪”后,我希望“就绪”框消失(现在,如果您单击就绪框内部,则不会发生任何事情,我不确定为什么)并生成一个随机矩形(随机 x 和 y 坐标)。玩家在第一个矩形的墙壁内
我有另一个 JW Player 问题...我已经实现了 JW Player 以在单击按钮时替换页面顶部的图像。该代码如下所示: Watch now $( ".button-watch1" ).cli
有谁知道我可以在不加载整个框架的情况下使用的优秀 javascript DOM 就绪库?我在 google code 上找到了一个这似乎可行,但该库是在 2008 年发布的,我找不到关于最新跨浏览器支
我在 docker-library/healthcheck 看到了 RabbitMQ 的 docker healthcheck 示例. 我想对我的 Kubernetes 部署应用类似的机制,以等待 R
有人可以解释一下为什么警报语句在这种情况下使用时不会返回任何内容: $(document).ready(function(){ $.get("/getsomedata.php", functi
我已经在一个项目上独立工作了一段时间,现在,由于各种原因,新的开发人员可能会加入该项目。 当然,我使用版本控制软件,但我担心将我的项目导入 Eclipse 并使其运行对新手来说可能有点困难,我希望它尽
我只是想知道是否有人对使用 Promise 时 Node JS 中的“确保就绪”模式有什么好的想法。我有类似的东西,但我认为它的主要问题是我认为 promise 的 .then(cb) 实际上覆盖了前
我知道这是这里的一个常见问题,但我已经对之前回答的问题进行了研究,但似乎找不到我的错误。 作为我正在制作的应用程序的一部分,当页面加载时, document.ready 函数应该查看无序列表中的每个列
谷歌 Ajax 爬虫说明说 !# 实际上被谷歌爬虫转化为 ?_escaped_fragment_。 我想准备我的 Vaadin 7 应用程序以便为 Google 搜索引擎做好 SEO 准备,所以您能否
问题是关于 http://labjs.com – 一个很棒的非阻塞 JavaScript 加载和依赖管理库。 我已经阅读了文档,但我一定是太累了或者什么的——我找不到任何关于 DOM 就绪事件的信息。
我通过 TCP/IP - SOCKET 发送数据 (ZPL) 代码。如果 zebra 打印机在线并准备就绪,我想检查 zebra 打印机的状态。 我谷歌了,但没有找到解决方案。 我知道斑马打印机的静态
我正在尝试连接 JFUSE 项目中的数据库。我在 pom 文件中包含了 com.mysql.jdbc 依赖项,项目构建运行良好。但是后来我遇到了这个烦人的问题。当我尝试将 bundle 安装到 OSG
我有一个条目列表。当我点击这样一个条目时,一个 HTTP 请求就完成了,数据将被加载并显示在一个表格中。到目前为止一切顺利。 现在我尝试创建一个导出函数来一次输出所有表。抽象代码如下所示: this.
我正在创建 CI/CD 管道。 我跑 helm install --wait --timeout 300 ... .但这并没有真正等待,只是在“发布”状态为 DEPLOYED 时返回。 . 那么我在
现在 Storm Spouts 有一个 open 方法来配置它们,而 Bolts 有一个 prepare 方法。有没有办法让所有 Spout 实例等待 Bolt 上的所有 prepare 方法完成监听
要等待某个 pod 完成,命令是 kubectl wait --for=condition=Ready pod/pod-name 同样,我想等待 statefulset 中的任何一个 pod 准备就绪
我是一名优秀的程序员,十分优秀!