2013-07-02 5 views
1

У меня есть приложение Flask, которое будет работать под Apache в процессе производства. У меня есть некоторые статические файлы, но они требуют аутентифицированного доступа. Таким образом, используя X-Sendfile казалось разумным, чтобы ускорить доставку файлов после аутентификации:Сервер разработки флагов с X-Sendfile

flaskapp = flask.Flask() 
flaskapp.use_x_sendfile = True 

Тогда где я генерации ответа:

return flask.send_file(filepath) 

Это, кажется, работает отлично под Apache. Проблема заключается в том, когда я запускаю сервер разработки:

# Use SharedDataMiddleware to deliver JS, CSS, icons, etc. 
flaskapp.wsgi_app = SharedDataMiddleware(flaskapp.wsgi_app, {'/static': '/path/to/static'}) 
flaskapp.run(host='0.0.0.0', debug=True) 

Когда я запускаю его таким образом с use_x_sendfile = True, заголовок X-Sendfile проявляется в реальной реакции и пустой файл (0 байт) доставляется клиенту , Отключение X-Sendfile (и принудительное удаление браузера для кэшированного файла) устраняет проблему, поэтому кажется, что запуск Flask-сервера Werkzeug не обрабатывает заголовок X-Sendfile. Есть ли способ заставить сервер разработки обрабатывать X-Sendfile, или я вынужден отключить его во время разработки?

ответ

2

Документация колбы упоминает, что server must support и DEV сервера WERKZEUG в нет (нет никакого упоминания нигде в документации и Grep через источник WERKZEUG для sendfile вернулся не матчи).

Возможно, было бы слишком сложно добавить это поведение на сервер, но я не уверен, что поддержка таких расширенных функций является приоритетом для сервера разработки.

Btw, в качестве дополнительных аргументов ключевых слов к run передаются на Werkzeug-х run_simple, вам не нужно создавать Промежуточное программное обеспечение самостоятельно, вы можете просто использовать:

flaskapp.run(host='0.0.0.0', debug=True, static_files={'/static': '/path/to/static'}) 
+0

Спасибо за подсказку. Я где-то загрузил вещи SharedDataMiddleware из сайта Flask. – jpmc26

 Смежные вопросы

  • Нет связанных вопросов^_^