сайт web2py не загружает все изображения/видео (особенно большие)

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


Я создал веб-сайт, управляемый базой данных, с помощью web2py, в котором записи представляют собой просто текст HTML. Большинство из них будут содержать теги img и/или video, указывающие на относительные URL-адреса; эти файлы хранятся в папках с шаблоном адреса static/content/article/<article-name>, а документ base href устанавливается через контроллер, чтобы эти ссылки работали. Таким образом, изображения хранятся и ссылаются напрямую, без всех механизмов загрузки/выгрузки.
Я тестирую его локально и использую сервер Rocket, потому что мне не разрешено устанавливать Apache на этот компьютер.

Проблема:
Все работает нормально, за исключением, как кажется, случаев, когда запрашивается несколько "больших" файлов. Под «большим» я подразумеваю файлы размером 4 МБ, что на самом деле не так много (и я думаю, что файлы меньшего размера дадут тот же результат). Я почти уверен, что ссылки не повреждены, поскольку 1) при копировании/вставке их URL-адресов в браузере они отображаются нормально, 2) изображения/видео отображаются хорошо/сломанными случайным образом, когда я обновляю страницу и 3) иногда видео загружается до определенного момента, а затем останавливается, а инспектор браузера показывает сигнал «сбой». Когда я заменил эти файлы на более мелкие (каждый по десятку кб), все они загрузились. Еще одна вещь, которую следует учитывать, это то, что иногда загрузка страницы занимает очень много времени (от 2 секунд до нескольких минут).

Вопросы:

  • Является ли это самым простым/оптимальным способом выполнения работы? Я знаю, что в web2py есть несколько полезных функций, таких как поля для загрузки, но я не знаю, как сделать так, чтобы эти файлы были легко упоминается в документе, учитывая, что на таких страницах будут некоторые специальные функции, связанные со статическими файлами. Итак, решение, которое я придумал до сих пор, состояло в том, чтобы создать каталог, имя которого равно имени записи, и хранить там файлы, как я уже говорил. Является ли это излишним, учитывая, что может предложить web2py?

  • Если ответ на первый вопрос что-то вроде "да", то (очевидный вопрос) что может быть причиной проблемы и как ее исправить? Это как-то связано с тем, что web2py отправляет статические файлы кусками по 1Mb? Может быть, это сервер Rocket? Или потому что я тестирую его локально?

Заранее спасибо!


person dev    schedule 11.12.2013    source источник


Ответы (1)


Трудно дать вам ответ, не зная некоторых деталей...

Где размещено ваше приложение Web2py? Вы используете апач? нгинкс? Вы выполняли развертывание с помощью сценария одноэтапного развертывания? (http://web2py.googlecode.com/hg/scripts/setup-web2py-ubuntu.sh)

Но в любом случае можно (нужно):

  • Настройте Apache/Nginx для прямого обслуживания ваших статических файлов (файлы в /YourApp/static/.). Для получения дополнительной информации см. сценарии «setup-web2py-» в папке «scripts».
  • Используйте scripts/zip_static_files.py для создания gzip-версий ваших статических файлов. Вы можете создать cron для запуска «python web2py.py -S myapp -R scripts/zip_static_files.py». Подробнее об эффективности в книге: http://web2py.com/books/default/chapter/29/13/deployment-recipes?search=static+files#Efficiency-and-scalability
person espern    schedule 11.12.2013
comment
На самом деле я ответил на эти вопросы одним предложением: я тестирую его локально и использую сервер Rocket, потому что мне не разрешено устанавливать Apache на этот компьютер. Я даже спросил, было ли что-то из этого причиной проблемы. Во всяком случае, я запускаю его в Windows, используя web2py.exe, потому что это единственный способ проверить его на этом ПК. - person dev; 11.12.2013
comment
Я знаю, что это не очень помогает... Было бы достаточно знать, будет ли это решено при развертывании на рабочем сервере. Спасибо за ответ! (И извините за второй комментарий) - person dev; 11.12.2013
comment
Я протестировал изображение размером 18 МБ, и у Rocket не было проблем с его обслуживанием... Возможно, у вас есть ошибка в вашем приложении. Я предлагаю вам упаковать минимальное приложение и разместить его в группе web2py здесь: groups .google.com/forum/?fromgroups#!forum/web2py В любом случае размещение изображений размером 4 МБ в веб-приложении — не очень хорошая идея. Вам следует подумать об уменьшении размера с помощью чего-то вроде: - person espern; 12.12.2013
comment
См. код внизу этой страницы: web2pyslices.com/slice/show/1613/ - person espern; 12.12.2013
comment
хм, я не знал о такой процедуре с использованием PIL, очень приятно. Я попробую! Кроме того, я не уверен, почему это произошло, но я снова протестировал тот же проект, и он работал нормально. Я предполагаю, что ответ до глупости проще, чем я ожидал: может быть, это просто мой компьютер слишком медленный и не хватает памяти, выдает ошибку тайм-аута или что-то в этом роде. В любом случае, еще раз спасибо! - person dev; 15.12.2013