Как предотвратить зависание Apache при отправке нескольких запросов в представления django, которые выводят изображения Matplotlib? - PullRequest
0 голосов
/ 23 июля 2011

У меня есть сайт django, на котором хранятся изображения matplotlib, сгенерированные из чисел, хранящихся в базе данных mysql.

В одном из представлений будет отображаться до 5 изображений.Значение src для изображений не ссылается на статические файлы, а вместо этого на представления django, которые будут генерировать изображения png.Загрузка изображений может занять до 5 секунд.Одна и та же функция просмотра django не вызывается повторно.Пять изображений соответствуют различным типам методов построения графиков, каждое из которых имеет свою функцию в представлении Django.

При отправке нескольких запросов на изображения сервер зависает.Я занимаюсь разработкой сайта с помощью xampp.Я не могу загрузить сайт на другой вкладке или любой из php-сайтов, которые я запускаю на том же сервере.

Если я пытаюсь загрузить все изображения с начальной страницы, сервер зависает.Если я загружаю страницу, то запрашиваю изображения отдельно, используя jquery / ajax (и терпеливо жду), тогда проблем нет.Если я быстро сделаю два ajax-запроса, то сервер зависнет.

Может кто-нибудь объяснить, в чем причина проблемы?

Могу ли я принудительно выполнить сериализованное выполнение запросов на сервере?

Можно ли использовать javascript для задержки каждого запроса до тех пор, пока не будет возвращено предыдущее изображение (а не только при обновлении ссылки как есть)на данный момент дело)?

Или я могу установить ограничение по времени для запросов на уничтожение этих зависаний на сервере?

Спасибо.Было бы очень полезно, если бы кто-то помог мне решить эту проблему.

Ответы [ 2 ]

0 голосов
/ 23 июля 2011

Вы обслуживаете свои изображения с Apache?если это так, вы можете попробовать более легкий сервер для ваших носителей, таких как nginx, lighttpd, TUX, Cherokee или даже урезанную версию Apache.

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

Вы можете просмотреть расширенную документацию по https://docs.djangoproject.com/en/dev/howto/static-files/

Мне кажется, проблема в том, что apache продолжает обслуживать медиа(тяжелые СМИ), и вы выходите из открытых связей.Существует ситуация, когда более легкий сервер может помочь, поскольку он может управлять гораздо большим количеством подключений, чем Apache.

0 голосов
/ 23 июля 2011

Вы можете использовать двухэтапный процесс для генерации этих страниц:

  • По первому запросу поместите задачи генерации изображения в систему очередей, такую ​​как сельдерей . Используйте отдельный процесс для выполнения этих задач и настройте его так, чтобы он выполнял столько, сколько ваша система справится параллельно.
  • На стороне клиента используйте ajax для опроса сервера, чтобы определить, когда завершены задачи генерации изображения, и завершите отображение.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...