问题标签 [python-trio]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
254 浏览

python - “询问”异步 https 客户端:'SSLEOFERROR 尝试使用自签名证书连接到服务器--警告:手写堆栈跟踪--

查看更新

我正在尝试使用自签名证书向 Web 服务器发送请求(在非自签名的网站上工作正常),但我不断收到错误消息:

相反,在使用请求时,python 的非异步 http 客户端,将 ssl_verify 设置为 false 允许成功连接到服务器。然而,异步 http 客户端,问,缺乏这样的功能,我得到 SSLEOFERROR。

Asks 确实允许接受自定义的 ssl.SSLContext 对象,但经过几次尝试,甚至将自签名证书添加到我的本地密钥库,都没有导致连接成功并且错误保持不变。

结果如下(手工输入的回溯..无法从出错的机器共享/粘贴) 开始 SSLEOFERROR 回溯:

更新 我已经确定了一些事情。

如果我不使用会话对象,而是只使用asks.get()我能够看到响应中的细微变化:

询问图书馆


SSLEOFERROR: [使用 pip 安装要求修复的错误——conda-forge 正在运行 3 个版本]

asks.get('https://url', auth=BasicAuth(usr_pw))

无效的 HTTP 响应错误:

asks.get('https:url/rest/api/path',auth=BasicAuth(usr_pw))

页面正文按预期返回:

asks.get('https://google.com')

请求库


页面正文按预期返回:

requests.get('https://url', auth=HTTPBasicAuth=(usr_pw),verify=false)

按预期从 API 返回的正确响应:

requests.get('https:url/rest/api/path', auth=HTTPBasicAuth=(usr_pw))

考虑到我可以生成另一种类型的错误(无效的 http 响应),我为 Begin Invalid HTTP Response Traceback 添加了更多的回溯:

[完整路径已编辑]

0 投票
1 回答
115 浏览

python - 检测当前的异步库

我正在编写一些异步库,并决定同时支持asyncio并发trio库来运行它。无论选择哪个库,我都有一些代码试图变得聪明并做正确的事情。

如何检测其中哪一个用于运行我的代码?可以两者兼而有之吗?

0 投票
1 回答
311 浏览

python-3.x - 如何收集结果并在父子函数中使用限制

我想要实现的目标是产生多个父母,每个父母都做一些工作,然后产生几个孩子来检查其他事情,并在父母身上获取这些结果以做进一步的工作。我还试图制作 2 个不同的产卵限制,因为父母的工作可以比孩子做的更多。

我将如何做到这一点?

如果我不使用limit2,它会起作用,但我想拥有两个限制器。

0 投票
1 回答
142 浏览

python-asyncio - 获取 OSError:(地址已在使用中)同时运行在 while 循环中使用 trio-sockets 的函数

代码

我想在每次收到长度为 0 的消息或连接被客户端关闭时一遍又一遍地运行该函数,但是当函数完成第一个 while 循环的第一次迭代时,它会给出一个 OSError 说端口已经正在使用。我在循环结束时关闭并关闭了我的套接字,但我仍然不知道程序在哪里出错。

程序的输出

0 投票
1 回答
741 浏览

python - Python - 如何取消由 python-trio 中的托儿所生成的特定任务

我有一个监听特定端口的异步函数。我想一次在几个端口上运行该功能,当用户想要停止在特定端口上侦听时,停止在该端口上侦听的功能。

以前我使用 asyncio 库来完成这个任务,我通过创建具有唯一 ID 作为名称的任务来解决这个问题。

由于 trio 使用托儿所生成任务,我可以通过使用nursery.child_tasks 查看正在运行的任务,但这些任务无法命名它们,甚至无法按需取消任务

TL;博士

由于 trio 没有取消特定任务的 cancel() 函数,我如何手动取消任务。

0 投票
1 回答
162 浏览

python-trio - 在 windows 中使用 trio 和 python 的异步命名管道

有什么方法可以在 windows 下的 trio 中使用异步命名管道?我有两个应用程序应该使用命名管道进行通信。一个正在运行 C#(这不是问题),另一个正在运行 python。

我试图挖掘一点,但还没有找到任何解决方案。我最接近相关代码的是:https ://github.com/python-trio/trio/blob/master/trio/tests/test_windows_pipes.py ,但目前我不知道如何创建命名管道. 有谁知道这是否可能或有一个可行的例子?

0 投票
1 回答
163 浏览

python - 使用 Trio 在屏幕上进行异步图像搜索

在给定时间在同一屏幕截图中搜索大量图像时,我正在尝试调整此模块以支持异步执行。我对异步编码有点陌生,经过大量研究后,我选择了 Trio 来做这件事(因为它很棒而且很容易)。

重点是:

  • 该函数接收图像路径列表
  • 在每次迭代中,它都会截取屏幕截图并尝试在数组中查找图像(如果我们不为数组中的每次尝试都截取新的屏幕截图,这会更好地提高性能)
  • 如果找到,则返回图像的路径和坐标
  • 重新做一遍,因为屏幕上可能会出现一些图像

我将在另一个支持与 Trio 异步的项目中使用它,这就是我尝试转换它的原因。

这是我的尝试:

尽管代码看起来正确,但我觉得我错过了异步代码的要点。这一切都可以以同步的方式完成,我觉得我没有做任何改变。

如果性能没有差异,那还不错,因为关键是要使此功能在异步上下文中有用,而不会在搜索图像的整个过程中阻塞,但是如果我可以优化一些东西,那肯定会更好.

也许如果不是awaiting在搜索所有图像之后我image_search()通过调用trio.sleep()并在主要功能上打开一个托儿所会更好?(trio.start_soon()对数组中的每个图像使用其中的方法)。这会减少对我将要使用的其他项目的阻碍,但是查找图像需要更多时间,对吗?

0 投票
1 回答
195 浏览

python-3.x - 使用 Kivy 和 Socket.io 运行 Trio 时出现问题

目前,我正在尝试将 Kivy、Socket.io 作为 Trio 的协程运行。似乎 Kivy UI 显示空白屏幕并且似乎没有响应。早些时候,Kivy 正在与 Trio 合作,在添加 socket.io 后,它变得没有响应。提供了相同的示例代码。

0 投票
1 回答
199 浏览

python - 如何使用 Trio 进行快速 Web api 调用?

我正在尝试加速一些调用 an 的代码api_caller(),这是一个生成器,您可以迭代它以获得结果。

我的同步代码如下所示:

当我在一个长长的列表上运行此代码时kws,大约需要 18 分钟才能完成。

当我使用线程时:

代码在大约 3 分钟内完成。

现在,我第一次尝试使用 Trio,但我遇到了麻烦。

这仍然需要大约 18 分钟才能执行。我在这里做错了什么,还是三重奏/异步之类的东西不适合我的问题设置?

0 投票
1 回答
50 浏览

python - 如何同步两个三重奏协程?

我正在学习 Trio 教程,并制作了一个echo-client,它将消息发送到echo 服务器10 秒:

并等待响应flag为“真”。

问题是有时程序会data = await client_stream.receive_some()因为与变量有关的并发问题而挂起flag

如何从sender协程向协程发送信号receiver

这是您可以运行的整个程序。