问题标签 [anyio]

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 投票
0 回答
30 浏览

python - 是否有 asyncio 的 `call_at` 或 `call_later` 对于 anyio 的等价物?

我正在使用 aioquic python 库实现一个简单的 QUIC 客户端,aioquic 有一个名为 get_timer 的函数,它返回我需要运行一些处理程序的时间。使用 asyncio 我可以简单地使用call_at,或者call_later但在 anyio(甚至三重奏)中,我找不到其他选择。

我目前处理这个问题的方法是简单地等到时间要求得到满足:

有没有办法在anyio中稍后调用协程?如果是这样,它会怎么做?如果没有内置方法,他们有没有实现它的库?如果没有,我自己实现它是否可行,或者我应该使用不同的方法?

谢谢您的考虑。

0 投票
0 回答
218 浏览

python - httpx/httpcore 内脏中某处的异常

我有一个使用任何代理列表的抓取引擎,并在代理不起作用的情况下重试。所以有很多代理超时,连接被拒绝,证书错误等。在我从 aiohttp 切换到 httpx 后,我有很多似乎没有阻碍的内部异常,只是垃圾日志。

也许开发人员中的某个人可以阐明它是什么?

0 投票
0 回答
39 浏览

python - anyio.sleep() 在 asyncio 和 trio 之间的小睡眠时间的时间不一致

python 3.9.5 (anyio, asyncio, trio) windows 10

除了在类中作为任务运行的另一个异步循环之外,我还试图用来anyio.sleep()限制我的主应用程序循环的运行速度。我注意到当我减少睡眠时间(提高刷新率)时,asyncio 似乎报告了不正确的、非常短的睡眠时间(高刷新率),而 trio 似乎报告了更多的预期值。

此外,当启动函数循环周期低于主循环刷新率时,asyncio 似乎会给出不可预测的结果。在高于 40 hz 的情况下,asyncio 的刷新速度似乎比预期的要快,在输入高刷新率时会呈指数级恶化。

在下面的代码示例中,FPSCounter 只是一个辅助类。整个块是可复制粘贴运行的。

以下是使用底部代码的一些不同刷新率的测试结果。

0 投票
1 回答
202 浏览

python - 将 anyio.TaskGroup 与 fastapi.StreamingResponse 一起使用

anyio是 FastAPI 的一部分starlette,因此也是 FastAPI 的一部分。我发现使用它的任务组对我的一个 API 服务器之外的外部服务执行并发请求非常方便。

另外,我想在结果准备好后立即发布。fastapi.StreamingResponse可以解决问题,但我仍然需要能够在返回后保持任务组正常运行StreamingResponse,但这听起来与结构化并发的想法背道而驰。

使用异步生成器可能看起来是一个明显的解决方案,但yield通常不能在任务组上下文中使用,根据此:https ://trio.readthedocs.io/en/stable/reference-core.html#cancel-范围和托儿所

有一个 FastAPI 服务器的示例似乎可以工作,尽管它会在返回之前聚合响应:

所以,问题是,是否有类似于@trio_util.trio_async_generatorin 的东西anyio,或者是否可以@trio_util.trio_async_generator直接与 FastAPI 一起使用?

也许还有其他解决方案?

0 投票
1 回答
73 浏览

python - 为什么在anyio上运行多达40个任务?

日志:

原本预计100个任务会一起运行,5秒左右结束,结果却用了15秒。

从日志中可以看出,它似乎同时运行了多达 40 个任务。

我将后端更改为 trio,但出现了同样的问题。

为什么会这样?

有没有办法在上面的代码中解决这个问题?

0 投票
1 回答
89 浏览

python-asyncio - FastAPI `run_in_threadpool` 卡住了

我已经使用异步实现了所有路由。并遵循 FastAPI 文档中的所有指南。

每条路由都有多个数据库调用,没有异步支持,所以它们是这样的正常功能

为了避免阻塞我的事件循环,我使用fastapi.concurrancy.run_in_threadpool

现在的问题是,当大量请求到来时,我的新请求被阻止了。即使我关闭浏览器选项卡(取消请求),整个应用程序也会卡住,直到旧请求得到处理。

我在这里做错了什么?

uvicorn用作我的 ASGI 服务器。我在具有 2 个副本的 Kubernetes 集群中运行。

很少有人怀疑:我是否产生了太多线程?它是 uvicron 中的一些错误吗?不太确定!