Уведомления

Группа в Telegram: @pythonsu

#1 Июль 14, 2010 16:03:36

axe
От:
Зарегистрирован: 2008-08-07
Сообщения: 256
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с wsgi

для экспорта

например, phpMyAdmin генерирует файлы на лету.



Отредактировано (Июль 14, 2010 16:04:14)

Офлайн

#2 Июль 14, 2010 16:41:56

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Работа с wsgi

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

Офлайн

#3 Июль 14, 2010 17:12:27

axe
От:
Зарегистрирован: 2008-08-07
Сообщения: 256
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с wsgi

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

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



Офлайн

#4 Июль 14, 2010 17:34:47

ziro
От:
Зарегистрирован: 2009-08-13
Сообщения: 225
Репутация: +  8  -
Профиль   Отправить e-mail  

Работа с wsgi

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



Офлайн

#5 Июль 14, 2010 17:39:18

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Работа с wsgi

а как же обрывы и докачка?
вообще это не веб задача, но http для перекачки архивов подойдет.

Офлайн

#6 Июль 14, 2010 17:54:37

axe
От:
Зарегистрирован: 2008-08-07
Сообщения: 256
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с wsgi

При экспорте данных нельзя делать докачку, т.к. между обращениями данные могли поменяться.



Офлайн

#7 Июль 14, 2010 17:59:02

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Работа с wsgi

с временным файлом докачка была бы.
пока клиент скачивает 2 часа, данные тоже могут поменяться.

вообщем тут уже реализация от цели зависит. задача специфическая.

Офлайн

#8 Июль 14, 2010 18:26:08

ziro
От:
Зарегистрирован: 2009-08-13
Сообщения: 225
Репутация: +  8  -
Профиль   Отправить e-mail  

Работа с wsgi

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

Но axe спрашивал про другое, ему видней.



Офлайн

#9 Июль 14, 2010 18:40:08

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Работа с wsgi

ziro
o7412369815963
вообще это не веб задача, но http для перекачки архивов подойдет.
небольшое колдунство с X-Accel-Redirect (для проверки авторизации и отдачи ссылки на файл только проверенным пользователям)
можно штатными средствами вебсерверов, у апача например файл .htaccess сделать.
ещё вариант: имя файла делать ключом (или папку где он лежит) /static/xxhxhxhxhxh.file, и только клиент бует знать путь.
+ для надежности можно ssl прикрутить.

Офлайн

#10 Июль 15, 2010 10:50:58

axe
От:
Зарегистрирован: 2008-08-07
Сообщения: 256
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с wsgi

o7412369815963
пока клиент скачивает 2 часа, данные тоже могут поменяться
Не могут. Запрос для экспорта выполяется 1 раз, и результат сохраняется во временное хранилище внутри базы данных. Такое хранение обеспечивает сама СУБД (тот же MySQL). А дальше уже идёт скачивание информации из этого хранилища. Если скачивание оборвалось, то данные стираются, потому что нет смысла их хранить. Запрос выполянется секунды, а скачивание действительно может идти часами.

Т.е. не важно, изменились ли данные за эти 2 часа, т.к. идёт выкачивание результата запроса.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version