Я написал метод POST во Flask, который просто возвращает статический файл, загруженный с диска:
from PIL import Image
from flask import Flask, send_file
app = Flask(__name__)
@app.route('/score', methods=['POST'])
def score():
return send_file('/data/temp.tif')
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=5000)
Я вызываю веб-службу следующим образом:
curl -X POST http://0.0.0.0:5000/score -i --output /data/temp2.tif
Яс удивлением обнаружил, что возвращаемый мне файл не совпадает с размером исходного файла:
# ls -al /data/*.tif
-rwxrwxrwx 1 root root 331030 Oct 8 21:23 /data/temp.tif
-rwxrwxrwx 1 root root 331338 Oct 8 21:33 /data/temp2.tif
Кроме того, разница в размере файла имеет важные последствия, поскольку, хотя оригинал является допустимым файлом TIFF, «копия»"возвращено веб-сервисом не является допустимым файлом TIFF:
>>> import tifffile
>>> tifffile.imread('/data/temp.tif').shape
(158, 238, 2)
>>> tifffile.imread('/data/temp2.tif')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/tifffile/tifffile.py", line 444, in imread
with TiffFile(files, **kwargs_file) as tif:
File "/usr/local/lib/python2.7/dist-packages/tifffile/tifffile.py", line 1754, in __init__
raise ValueError('not a TIFF file')
ValueError: not a TIFF file
Я использую Python 2.7.12 и Flask версии 1.0.2.Будем благодарны за любую помощь в определении причины проблемы!