Python异步IO读取文件并每隔一段时间执行另一个活动

Python异步IO读取文件并每隔一段时间执行另一个活动,python,python-asyncio,Python,Python Asyncio,我承认自己非常懒惰:我需要相当快地完成这项工作,但我无法理解python3asyncio模块。(有趣的是,我发现这个增强非常直观。) 我需要读取一个文件对象(管道),它会不时阻塞。在此期间,我希望能够以设定的时间间隔(比如每30分钟)启动另一个活动,而不管是否有任何可从文件中读取的内容 有人能帮我用python3asyncio做一个骨架吗?(我无法安装第三方模块,如twisted。)异步IO(以及其他异步库,如twisted和tornado)不支持文件的非阻塞IO——只有套接字和管道是异步处理的

我承认自己非常懒惰:我需要相当快地完成这项工作,但我无法理解python3asyncio模块。(有趣的是,我发现这个增强非常直观。)

我需要读取一个文件对象(管道),它会不时阻塞。在此期间,我希望能够以设定的时间间隔(比如每30分钟)启动另一个活动,而不管是否有任何可从文件中读取的内容

有人能帮我用python3asyncio做一个骨架吗?(我无法安装第三方模块,如twisted。)

异步IO(以及其他异步库,如twisted和tornado)不支持文件的非阻塞IO——只有套接字和管道是异步处理的

主要原因是:Unix系统没有处理文件的好方法。比如说,在Linux上,任何文件读取都是阻塞操作

另见

UPD.

对于计划定期活动,我想使用
asyncio.Task

@asyncio.coroutine
def periodic(reader, delay):
    data = yield from reader.read_exactly(100)  # read 100 bytes
    yield from asyncio.sleep(delay)

task = asyncio.Task(reader, 30*60)

Snippet假定
reader
asyncio.StreamReader
实例。

另一个可能不太复杂的选项是同步读取文件,并通过
threading.Timer
在后台线程中执行其他工作。谢谢。我没有意识到这种差异。但事实上,正如我所说的,我正在读一个管道。为定期跑步者添加了一个片段。如果您想更具体地了解管道对象类型(如何创建/获取该对象),我可以猜得更多。