def sendfile(self, path):
with open(path, mode='r') as file:
offset = 0
blocksize = os.path.getsize(path)
logger.debug("RETR DTP Server is waiting for writable.")
while True:
if self.sock_client:
break
await sleep(1)
await self.sock_client.writeable()
logger.debug("RETR DTP Server is writable.")
while True:
try:
sent = sendfile(self.sock_client.fileno(), file.fileno(), offset, blocksize)
except BlockingIOError:
continue
logger.debug("RETR DTP Server send {}".format(offset))
if sent == 0:
await self.sock_client.close()
await self.client.sendall(parse_message(226, 'Transfer complete.'))
await self.close()
break
offset += sent
评论列表
文章目录