Ключевым моментом здесь является то, что WSGI, а также пилоны работают с повторяющимися ответами. Таким образом, вы должны быть в состоянии написать некоторый код вроде (предупреждение, непроверенный код ниже!):
def file_streamer():
with open(filepath, 'rb') as f:
while True:
block = f.read(4096)
if not block:
break
yield block
response.app_iter = file_streamer()
Кроме того, paste.fileapp.FileApp
разработан, чтобы иметь возможность возвращать данные файла для вас, поэтому вы также можете попробовать:
return FileApp(filepath)
в вашем методе контроллера.