问题标签 [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.
python - self = None 有什么作用?
我正在阅读传入包的源代码asyncio
。请注意,在方法的末尾,有一个self = None
语句。它有什么作用?
我认为它会删除实例,但以下测试不建议这样做:
python - 龙卷风发生器在列表中的任何未来恢复
龙卷风(或异步)中是否有行为/模式等待a 中的任何而不是所有期货list
?
说future2
准备好了,那么结果应该是:
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
会失败。有什么干净的解决方案吗?
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 上讨论过很久以前。”
python - 如何测试 Python 3.4 asyncio 代码?
asyncio
使用 Python 3.4库为代码编写单元测试的最佳方法是什么?假设我想测试一个 TCP 客户端 ( SocketConnection
):
当使用默认测试运行器运行此测试用例时,测试将始终成功,因为该方法只执行到第一yield from
条指令,之后它在执行任何断言之前返回。这会导致测试始终成功。
是否有能够处理这样的异步代码的预构建测试运行器?
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
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
,但它应该等待插入任务完成,即使主协程之前完成。
web-frameworks - Python3.4 asyncio(tulip) http框架
我想知道是否已经有一些 http-server-framework 使用了新的 asyncio 功能。我知道 aiohttp,但它实际上只是一个简单的服务器。
另外:WSGI 标准不是异步驱动的,是否有更新规范的工作?
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 上。
python - Tornado 和 Autobahn-python 在同一个端口上监听
最近我开始了一个小的个人项目。这是一个基于 asyncio 和 autobahn-python 的实时网络系统。但是,我也想通过 HTTP 提供一些静态文件,并从同一个过程中完成。我的 HTTP 服务器是 Tornado,它位于 asyncio 事件循环之上,除了我必须在不同的端口上启动 tornado 和高速公路处理程序之外,一切都运行良好。这是我目前拥有的精简版:
问题:是否有正确的方法让 autobahn-wamp 和 tornado 处理程序在同一个端口上侦听?
我最初的想法是实现某种 socket.socket 包装器并在那里发送传入的消息,但结果非常混乱。我不想使用任何外部代理,因为后端应该尽可能地便携。
此外,我并没有要求任何人为我实现它(但如果你愿意,当然可以!) - 只是想知道是否有人在深入高速公路/龙卷风代码之前已经做过类似的事情。
提前致谢!
PS:对不起我的英语不好-这不是我的母语。