Некоторое время назад я написал небольшое приложение Python с использованием Flask для предоставления веб-сервера, который позволил бы пользователям загружать один статический файл через Интернет.
Это выглядело примерно так:
Теперь я хочу сделать что-то похожее, однако вместо того, чтобы обслуживать небольшой файл, я хочу обслуживать гораздо больший файл, содержащий около 15 ГБ данных. Он достаточно большой, чтобы не поместиться на сервере Linode с 4 ГБ ОЗУ и ценой 5 долларов в месяц, на котором он должен работать.
Вместо того, чтобы выяснить, как читать файл по частям и предоставлять способ его загрузки с помощью Flask, мне пришло в голову, что одним из основных вариантов использования Nginx является обслуживание статических файлов, поэтому вместо того, чтобы хакать приложение Python для этого, почему бы не использовать инструмент, который был разработан для этого?
Я не понимаю, как запрограммировать файлы конфигурации, чтобы заставить его делать это. Я установил его и настроил доменное имя так, чтобы оно указывало на адрес IPv4 сервера Linode.
Файл, который я хочу предоставить пользователям для загрузки, находится по адресу /static/file.txt
.
import flask
app = flask.Flask(__name__)
@app.route('/')
def index():
return 'go to /file.txt to download file'
@app.route('/file.txt')
def file_txt():
with open('/static/file.txt', 'r') as ifile:
data = ifile.read()
return data
if __name__ == '__main__':
app.run(debug=True, host='127.0.0.1', port=80)