问题标签 [python-asyncio]

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 投票
2 回答
8953 浏览

python - self = None 有什么作用?

我正在阅读传入的源代码asyncio。请注意,在方法的末尾,有一个self = None语句。它有什么作用?

我认为它会删除实例,但以下测试不建议这样做:

0 投票
1 回答
2178 浏览

python - 龙卷风发生器在列表中的任何未来恢复

龙卷风(或异步)中是否有行为/模式等待a 中的任何而不是所有期货list

future2准备好了,那么结果应该是:

0 投票
2 回答
6804 浏览

python - asyncio yield from concurrent.futures.Future of an Executor

我有一个long_task运行繁重的 cpu-bound 计算的函数,我想通过使用新的 asyncio 框架使其异步。生成的long_task_async函数使用 aProcessPoolExecutor将工作卸载到不受 GIL 约束的不同进程。

问题在于,由于某种原因,当 yield from 时concurrent.futures.Future返回的实例ProcessPoolExecutor.submit会抛出一个TypeError. 这是设计使然吗?asyncio.Future那些期货与阶级不兼容吗?什么是解决方法?

我还注意到生成器不可腌制,因此向 couroutine 提交ProcessPoolExecutor会失败。有什么干净的解决方案吗?

0 投票
2 回答
2478 浏览

python-3.x - 如何装饰 asyncio.coroutine 以保留其 __name__?

我试图编写一个装饰器函数,它包装一个asyncio.coroutine并返回完成所花费的时间。下面的配方包含按我预期工作的代码。我唯一的问题是,尽管使用了@functools.wraps. 如何保留原有协程的名称?我检查了来源asyncio.

结果:

如您所见random_sleep(),返回一个具有不同名称的生成器对象。我想保留装饰协程的名称。我不知道这个问题是否是特定的asyncio.coroutines。我还尝试了具有不同装饰器命令的代码,但结果都相同。如果我发表评论@functools.wraps(coro),那么甚至random_sleep.__name__wrapper像我预期的那样。

编辑:我已将此问题发布到 Python 问题跟踪器,并收到了 R. David Murray 的以下回答:“我认为这是一个更普遍的需要改进‘包装’的具体案例,这在 python-dev 上讨论过很久以前。”

0 投票
10 回答
39149 浏览

python - 如何测试 Python 3.4 asyncio 代码?

asyncio使用 Python 3.4库为代码编写单元测试的最佳方法是什么?假设我想测试一个 TCP 客户端 ( SocketConnection):

当使用默认测试运行器运行此测试用例时,测试将始终成功,因为该方法只执行到第一yield from条指令,之后它在执行任何断言之前返回。这会导致测试始终成功。

是否有能够处理这样的异步代码的预构建测试运行器?

0 投票
1 回答
5883 浏览

python - Python code that should error from asyncio.wait and be caught in a try clause is not being caught

so I have an event loop which will run_until_complete my accept_connection method

my handle_connection method looks like this

finally my handle_read_from_connection (currently) looks like this:

therefore this method should always raise an error and hit the except block of the try catch statement and print invalid packet detected. Instead what happens is I get a traceback!

does anyone know what going on here? why is the try catch not working? and how can I get it so we can catch these errors

0 投票
1 回答
1984 浏览

python - Python 3.4 asyncio 任务未完全执行

我正在试验 Python 3.4 的 asyncio 模块。由于没有使用 asyncio 的 MongoDB 生产就绪包,我编写了一个小型包装器类,它在执行程序中执行所有 mongo 查询。这是包装:

我想异步执行插入,这意味着执行它们的协程不想等待执行完成。asyncio 手册指出A task is automatically scheduled for execution when it is created. The event loop stops when all tasks are done.,所以我构建了这个测试脚本:

当我运行脚本时,我得到以下结果:

应该有一行表明 mongo 查询已完成。当我yield from使用这个协程而不是使用asyncio.async. 然而,真正奇怪的是,当我运行这个 corouting using 时,测试条目实际上存在于 MongoDB 中asyncio.async,所以尽管它似乎有效,但我不明白为什么我看不到指示查询有的打印语句被执行。尽管我使用 运行事件循环run_until_completed,但它应该等待插入任务完成,即使主协程之前完成。

0 投票
2 回答
1131 浏览

web-frameworks - Python3.4 asyncio(tulip) http框架

我想知道是否已经有一些 http-server-framework 使用了新的 asyncio 功能。我知道 aiohttp,但它实际上只是一个简单的服务器。

另外:WSGI 标准不是异步驱动的,是否有更新规范的工作?

0 投票
1 回答
1436 浏览

python - Windows 中的 aiohttp Python 库是否支持 HTTPS?

当我在 Windows 7 中使用带有 asyncio 和 Python 3.4 的 aiohttp 库发出 HTTPS 请求时,请求失败并在 base_events.py 中的 _make_ssl_transport 函数中出现 NotImplementedError,如回溯中所示。

在 Windows 上,我使用 ProactorEventLoop。我认为你必须使用那个来让 asyncio 工作。我在带有 Python 3.4 编译版本的 Debian 7 VM 中尝试了相同的请求,并且相同的请求有效。我不使用 Debian 中的 ProactorEventLoop,只是默认的。

有什么想法或解决方法吗?或者,我现在应该放弃 Windows 上的 aiohttp HTTPS 吗?我不能在这个项目中使用 Linux,需要在 Windows 上。

0 投票
0 回答
923 浏览

python - Tornado 和 Autobahn-python 在同一个端口上监听

最近我开始了一个小的个人项目。这是一个基于 asyncio 和 autobahn-python 的实时网络系统。但是,我也想通过 HTTP 提供一些静态文件,并从同一个过程中完成。我的 HTTP 服务器是 Tornado,它位于 asyncio 事件循环之上,除了我必须在不同的端口上启动 tornado 和高速公路处理程序之外,一切都运行良好。这是我目前拥有的精简版:

问题:是否有正确的方法让 autobahn-wamp 和 tornado 处理程序在同一个端口上侦听?
我最初的想法是实现某种 socket.socket 包装器并在那里发送传入的消息,但结果非常混乱。我不想使用任何外部代理,因为后端应该尽可能地便携。
此外,我并没有要求任何人为我实现它(但如果你愿意,当然可以!) - 只是想知道是否有人在深入高速公路/龙卷风代码之前已经做过类似的事情。
提前致谢!
PS:对不起我的英语不好-这不是我的母语。