草庐IT

Asyncio库

全部标签

python - Asyncio.gather 与 asyncio.wait

asyncio.gather和asyncio.wait似乎有类似的用途:我有一堆我想要执行/等待的异步事情(不一定要在下一个开始之前等待一个完成)。它们使用不同的语法,并且在某些细节上有所不同,但对我来说,拥有两个在功能上具有如此巨大重叠的函数似乎非常不符合Python标准。我错过了什么? 最佳答案 虽然在一般情况下类似(“运行并获取许多任务的结果”),但每个函数都有一些针对其他情况的特定功能:asyncio.gather()返回一个Future实例,允许对任务进行高级分组:importasynciofrompprintimport

python - "Asyncio Event Loop is Closed"获取循环时

当尝试运行文档中给出的asynciohelloworld代码示例时:importasyncioasyncdefhello_world():print("HelloWorld!")loop=asyncio.get_event_loop()#Blockingcallwhichreturnswhenthehello_world()coroutineisdoneloop.run_until_complete(hello_world())loop.close()我得到错误:RuntimeError:Eventloopisclosed我正在使用python3.5.3。

python - Asyncio 错误,尝试对非套接字的对象进行操作

我目前正在研究当前的玩具代码,以尝试理解asyncio模块。importasyncioimportos,sys,tracebackfromtimeimporttimeos.environ['PYTHONASYNCIODEBUG']='1'print(sys.version)deftimed_fib(n):deffib(n):returnfib(n-1)+fib(n-2)ifn>1elsena=time()returnfib(n),time()-adefprocess_input():text=sys.stdin.readline()n=int(text.strip())print('f

python - Windows 中的 asyncio 循环的 add_signal_handler()

我目前正在将一个Python项目从Linux移植到Windows(使用AnacondaPython3.6)。一切正常,我只是无法正常退出asyncio循环。在Linux中,我正在执行以下操作:classGracefulExit(SystemExit):code=1defraise_graceful_exit():raiseGracefulExit()loop=asyncio.get_event_loop()loop.add_signal_handler(signal.SIGINT,raise_graceful_exit)loop.add_signal_handler(signal.SI

windows - 为什么在 asyncio 事件循环运行时我无法捕获 SIGINT?

在Windows上使用Python3.4.1,我发现在执行asyncioeventloop时,我的程序不能被中断(即通过在终端中按Ctrl+C)。更重要的是,SIGINT信号被忽略了。相反,我确定SIGINT在不在事件循环中时得到处理。为什么在执行asyncio事件循环时忽略SIGINT?下面的程序应该可以证明问题-在终端中运行它并尝试按Ctrl+C停止它,它应该继续运行:importasyncioimportsignal#Nevergetscalledafterenteringeventloopdefhandler(*args):print('Signaled')signal.sig

python - 在 asyncio 事件循环中运行协程和线程 : Errors while exiting

我设计了一段python代码,它在更大的事物方案中基本上充当微服务。我在循环中安排了两个任务,还有两个任务设置为在执行器中运行。奇怪的是代码运行良好。做我期望的一切。但是当我用KeyboardInterrupt(Ctrl+C)结束它时,我看到了错误和异常。这让我觉得我肯定在滥用异步模式。我将尝试提供代码的简要概述,而不会立即讨论冗长的细节:classPrototype:def_redis_subscriber(self):self._p=self._redis_itx.pubsub(ignore_subscribe_messages=True)self._p.subscribe("ch

python - 如何保证使用python asyncio发送的tcp数据?

我有一个连接到服务器并发送列表中所有消息的客户端,每条发送的消息都会从列表中删除。但是当我强制关闭服务器时,客户端仍然继续发送和删除列表中的消息。如果连接断开,我希望客户端停止发送消息,或者如果不能保证服务器已收到消息,则不要从列表中删除。我检查当我在连接断开后发送超过四条消息时,显示错误“socket.send()raisedexception”。但我不知道如何得到那个错误,我认为它是异步的。无论如何,如果我收到该错误,如果列表在连接断开后要发送的消息少于5条,则不会发生该错误。Ps:我编写服务器只是为了我的测试,但我将无法访问该服务器。因此,需要尽一切努力保证数据发送的客户端。非常

python - asyncio 不会通过 tcp 发送整个图像数据

我正在尝试使用带有TCP协议(protocol)的asyncio将图像从我的本地计算机发送到云中的计算机。有时我会发送整个图像,有时只发送部分图像。客户端代码importosos.environ['PYTHONASYNCIODEBUG']='1'importasyncioimportlogginglogging.basicConfig(level=logging.ERROR)asyncdeftcp_echo_client(data,loop):reader,writer=awaitasyncio.open_connection(,,loop=loop)print('Sendingdat

python - 如何使用 asyncio 创建 TCP 代理服务器?

我在asyncio上找到了这些带有TCP客户端和服务器的示例:tcpserverexample.但是如何连接它们以获得将接收数据并将其发送到其他地址的TCP代理服务器? 最佳答案 您可以将两者结合使用theTCPclientandserverexamples来自userdocumentation.然后您需要使用这种助手将流连接在一起:asyncdefpipe(reader,writer):try:whilenotreader.at_eof():writer.write(awaitreader.read(2048))finally:w

python - Python AsyncIO 的 loop.add_reader() 期望什么文件描述符对象?

我正试图了解如何在Python3.4中使用新的AsyncIO功能,并且我正在努力了解如何使用event_loop.add_reader().来自limiteddiscussions我发现它看起来像是从一个单独的进程中读取标准而不是打开文件的内容。真的吗?如果是这样,似乎没有AsyncIO特定的方法来集成标准文件IO,这也是真的吗?我一直在玩下面的代码。以下输出给出异常PermissionError:[Errno1]Operationnotpermittedfromline399of/python3.4/selectors.pyself._epoll.register(key.fd,ep