•  
  • 0
  •  
0

Написание демонов на python

Есть задача написать демона, который будет непрерывно обрабатывать данные. Задачу нужно решить на питоне с использованием минимального количества ресурсов.

Есть база из нескольких миллионов интернет адресов. Соответственно я вижу 2 узких места:

  1. Загрузка данных по сети.
  2. Запись обработанных результатов в базу.

Сложность в придумывании оптимальной архитектуры.

Была попытка использовать легкие нити с применением gevent. Создается несколько рабочих процессов: обновление очереди, сохранение в базу, непосредственно загружающие страницы. Решение не принесло ожидаемого результата из-за того, что блокировался интерпретатор из-за использования C кода (pycurl).

Сейчас используется аналогичное решение, но вместо нитей gevent используется модуль multiprocessing.

Решение в нынешнем виде не устраивает потому, что расходуется много лишних ресурсов и скорость оставляет желать лучшего.

Во-вторых, категорически не нравится вариант применения ассинхронных подходов. Создать список константной величины, запустить его в асинхронный обработчик и при получении всех результатов сохранить скопом в базу. Такой подход не нравится ввиду того, что расход ресурсов будет скачкообразным. Хотя подход очень простой.

В-третьих, не хотелось бы использовать такие средства как celery, поскольку они сильно раздувают архитектуру и тратят ресурсы. Обращаюсь к коллегам за помощью в поиске оптимального решения.

pycurl, gevent, python.
спросил 171 день назад Аватор пользователя tc tc
718 15
изменил 160 дней назад Аватор пользователя tc tc
718 15
300
Чтобы написать ответ, вы должны авторизироваться.