使用扭曲将文件读取到标准输出
Reading file to stdout with twisted
我们如何读取文件(非阻塞)并将其打印到标准输出(仍然是非阻塞)?这是我能想到的最简单的方法,但它让您觉得一定有更好的方法。暴露一些 LineReceiver 的东西——比如逐行修改——功能会更受欢迎。
from twisted.internet import stdio, protocol
from twisted.protocols.basic import FileSender
from twisted.internet import reactor
class FileReader(protocol.Protocol):
def connectionMade(self):
fl = open('myflie.txt', 'rb')
d = FileSender().beginFileTransfer(fl, self.transport)
d.addBoth(fl.close)
d.addBoth(lambda _: reactor.stop())
stdio.StandardIO(FileReader())
reactor.run()
这是 Twisted 的弱点。异步文件 I/O 根本就很难做到,而且可能"right" 也做不到。有一个长期开放的工单:https://twistedmatrix.com/trac/ticket/3983,你可能会找到一个有用的地方继续讨论。
您在此处使用的习语绝对是我们目前提供的最接近正确的习语。
我们如何读取文件(非阻塞)并将其打印到标准输出(仍然是非阻塞)?这是我能想到的最简单的方法,但它让您觉得一定有更好的方法。暴露一些 LineReceiver 的东西——比如逐行修改——功能会更受欢迎。
from twisted.internet import stdio, protocol
from twisted.protocols.basic import FileSender
from twisted.internet import reactor
class FileReader(protocol.Protocol):
def connectionMade(self):
fl = open('myflie.txt', 'rb')
d = FileSender().beginFileTransfer(fl, self.transport)
d.addBoth(fl.close)
d.addBoth(lambda _: reactor.stop())
stdio.StandardIO(FileReader())
reactor.run()
这是 Twisted 的弱点。异步文件 I/O 根本就很难做到,而且可能"right" 也做不到。有一个长期开放的工单:https://twistedmatrix.com/trac/ticket/3983,你可能会找到一个有用的地方继续讨论。
您在此处使用的习语绝对是我们目前提供的最接近正确的习语。