Найти - Пользователи
Полная версия: Работа с wsgi
Начало » Web » Работа с wsgi
1 2 3 4
axe
для экспорта

например, phpMyAdmin генерирует файлы на лету.
o7412369815963
для экспорта данные лучше зажимать архиваторами, для этого нужно целиком данные собрать на диске (что-б память не забивать), а т.к. данные будут на диске то и отдавать веб сервером как статику.
axe
gzip сжимает данные на лету, тогда и файл рядом с вёб-сервисом не понадобится. это первое.
второе, то что файл у меня на самом деле не генерируется, а вытаскивается из сокета и его размер может быть действительно большим (1Gb, например). было бы странно устраивать перекачку с одного сервера на другой и только после этого отдавать пользователю ссылку. по крайней мере это займёт время, пользователь может просто не дождаться начала скачивания.
третье - файл не должен отдаваться как статика, т.к. должен быть доступен только авторизованному пользователю. и при отмене скачивания, ситуация должна быть корректно обработана и скрипт должен передать соответствующее сообщение серверу, с которого идёт скачивание.

может быть, я и не привёл ни одной достаточной для вас причины, но генерация файлов на лету должна быть, не с пустого места её придумали. отмечу, что ни в mod_python, ни в php никаких проблем с этим нет.
ziro
axe
Можно ли под wsgi генерировать файлы? Т.е. сгенерировал заголовок файла - отдал, потом генерировать поток данных и отдавать его.
Легко. По спецификации приложение должно возвращать питоновский генератор - http://www.python.org/dev/peps/pep-0333/#the-application-framework-side (см. AppClass). Так что выдавать по частям вполне можно.
o7412369815963
а как же обрывы и докачка?
вообще это не веб задача, но http для перекачки архивов подойдет.
axe
При экспорте данных нельзя делать докачку, т.к. между обращениями данные могли поменяться.
o7412369815963
с временным файлом докачка была бы.
пока клиент скачивает 2 часа, данные тоже могут поменяться.

вообщем тут уже реализация от цели зависит. задача специфическая.
ziro
o7412369815963
вообще это не веб задача, но http для перекачки архивов подойдет.
Абсолютно согласен. Лично я бы серьезно расмотрел сохранение файлов на серваке (снижение нагрузки на сервер) и небольшое колдунство с X-Accel-Redirect (для проверки авторизации и отдачи ссылки на файл только проверенным пользователям). Правда пришлось бы по крону потом место чистить время от времени.

Но axe спрашивал про другое, ему видней.
o7412369815963
ziro
o7412369815963
вообще это не веб задача, но http для перекачки архивов подойдет.
небольшое колдунство с X-Accel-Redirect (для проверки авторизации и отдачи ссылки на файл только проверенным пользователям)
можно штатными средствами вебсерверов, у апача например файл .htaccess сделать.
ещё вариант: имя файла делать ключом (или папку где он лежит) /static/xxhxhxhxhxh.file, и только клиент бует знать путь.
+ для надежности можно ssl прикрутить.
axe
o7412369815963
пока клиент скачивает 2 часа, данные тоже могут поменяться
Не могут. Запрос для экспорта выполяется 1 раз, и результат сохраняется во временное хранилище внутри базы данных. Такое хранение обеспечивает сама СУБД (тот же MySQL). А дальше уже идёт скачивание информации из этого хранилища. Если скачивание оборвалось, то данные стираются, потому что нет смысла их хранить. Запрос выполянется секунды, а скачивание действительно может идти часами.

Т.е. не важно, изменились ли данные за эти 2 часа, т.к. идёт выкачивание результата запроса.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB