Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 6, 2011 22:44:03

fth
От:
Зарегистрирован: 2010-07-26
Сообщения: 105
Репутация: +  0  -
Профиль   Отправить e-mail  

Мониторинг работы "бесконечных" итераторов.

Отслеживаю измения в Couch DB, примерно таким кодом:

for change in dbl.changes(feed='continuous', heartbeat = 10000):
process_func(change)
По сути цикл проходит по “бесконечному” итератору, при этом между сосденими элементами может быть существенный промежуток во времени.
Хотелось бы сделать автоматический мониторинг (без перезапуска) запущен этот цикл или нет, к сожалению, т.к. символ переноса посылаемый базой по параметру heartbeat модулем Питона никак не отдаётся, самый очевидный способ отпадает.
Есть ли соображения как это можно сделать?



Отредактировано (Апрель 6, 2011 23:20:10)

Офлайн

#2 Апрель 7, 2011 15:03:38

agalen
От:
Зарегистрирован: 2011-03-23
Сообщения: 185
Репутация: +  17  -
Профиль   Отправить e-mail  

Мониторинг работы "бесконечных" итераторов.

А почему бы просто не использовать try…finally вокруг?
Например, так:

try:
for change in dbl.changes(feed='continuous', heartbeat = 10000):
process_func(change)
finally:
on_my_super_loop_dead()



Офлайн

#3 Апрель 7, 2011 19:46:59

fth
От:
Зарегистрирован: 2010-07-26
Сообщения: 105
Репутация: +  0  -
Профиль   Отправить e-mail  

Мониторинг работы "бесконечных" итераторов.

А что будет если убить процесс?
Может стоит помучатся и запустить это дело как демона?



Отредактировано (Апрель 8, 2011 01:33:03)

Офлайн

#4 Апрель 8, 2011 09:25:16

agalen
От:
Зарегистрирован: 2011-03-23
Сообщения: 185
Репутация: +  17  -
Профиль   Отправить e-mail  

Мониторинг работы "бесконечных" итераторов.

Получается, задача сводится к слежению за процессом (демон ведь тоже процесс). Тут уже разные способы: использование готовых средств мониторинга, написание собственных и т.д.
Можно еще в inittab задать автоматический перезапуск в случае смерти демона.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version