Задать вопрос

Каким способом запускать тяжелый скрипт-обработчик?

Всем привет

Ситуация:

Есть обычный сайт на Django, который имеет 4000 посетителей в сутки. Хостится на 2000мгц, 500 оперативки. В общем, хватает.

На сайте есть 20000 карточек партнерских товаров, ценник в которых нужно корректировать примерно раз в 10 дней. Ценник можно взять только на одном месте - на сайте партнеров. Причем они этот ценник не отдают отдельно, приходится парсить html и с помощью beautifulsoup вычленять цену.

Если я запускаю скрипт на своем дев-компе, то он работает 25 минут. И у меня есть уверенность, что если я его запущу на хостинге, то хостинг просто ляжет.

Что делать в такой ситуации?
  • Вопрос задан
  • 548 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 3
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
1. Взять хостинг пожирнее.
2. Запускать скрипт на мощном компе, формировать компактную выжимку данных, которую скрипт на хостинге сможет быстро прочитать и внести в базу, а потом заливать её на web-сервер.
2. Писать быстрый парсер. Возможно, не на Python.
Ответ написан
Комментировать
sim3x
@sim3x
0. Думать не надо - надо проверить
0.1 Проверить, какие ресурсы скрипт отьедает активнее всего
1. Если все ест равномерно = man nice
Если что-то больше - google cgroups

Скрипт внедрить в джангу в виде django commands

Если у вас синхронный скрипт, то он работает долго, но ресурсов не ест - он просто долго ожидает получения хтмл = вообще ничего делать не нужно

Не используйте BS - lxml делает тоже самое и без обертки в виде BS
Ответ написан
Комментировать
@kgbplus
Переписать на scrapy и затроттлить до приемлемого уровня. Ну или в свой скрипт навтыкать time.sleep во все циклы, пусть скрипт работает не 25, а 250 минут, вряд ли это так принципиально. Зато ресурсов он будет потреблять мизер. Ну и правильно выше пишут, сначала надо выяснить точно ли он положит хостинг и если да, то чего именно ему не хватит.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы