Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python.readline()重置_Python_Python 3.x_Python Asyncio - Fatal编程技术网

Python.readline()重置

Python.readline()重置,python,python-3.x,python-asyncio,Python,Python 3.x,Python Asyncio,在Python3.4/Asyncio中,我使用的是StreamReader/Writer 要检测客户端断开连接,常用的方法似乎是从客户端读取数据,如果没有数据,则客户端断开连接 while True: data = (yield from asyncio.wait_for(client_reader.readline(), timeout=1.0)) if not data: #client disconnec

在Python3.4/Asyncio中,我使用的是StreamReader/Writer

要检测客户端断开连接,常用的方法似乎是从客户端读取数据,如果没有数据,则客户端断开连接

while True:
    data = (yield from asyncio.wait_for(client_reader.readline(),
                                   timeout=1.0))
    if not data: #client disconnected
        break
无论从客户端头读取的行数有多快(它会移动到每个循环的下一行),如果没有从客户端发送额外的行(在我的情况下,客户端不只是发送侦听),您都会到达超时

我想做的是反复阅读标题的第一行。。或者甚至可能只是第一行的第一个字符,或者如果不可能,当它到达最后一行时,循环回到第一行


完成这项任务的最佳/最优雅的方式是什么?3.4/Asyncio/StreamReader/Writer。(检测客户端断开连接)

我遇到了类似的问题。我的工作方式是先检查EOF,然后在为真时引发ConnectionError异常。因此,对于您的代码,我将添加以下内容:

while True:

    try:
        if client_reader.at_eof():
            raise ConnectionError

        data = (yield from asyncio.wait_for(client_reader.readline(),
                                       timeout=1.0))
        if not data: #client disconnected
            break

    except ConnectionError:
        break

    except:
        break # This is here to catch things like the asyncio futures timeout exception

希望有帮助。如果有人有更好的方法,我会感兴趣的

我认为问题不是特定于asyncio的,可能需要更改客户端代码。在没有异步IO的情况下,“一般”如何解决?