Я ищу пример для веб-приложения на основе колб с наблюдателем.Более конкретно, я хочу использовать сторожевой наблюдатель для обнаружения любых изменений в предопределенных каталогах и обновления веб-приложения на основе этих изменений.Я могу найти много примеров для каждого из них, например, веб-приложения на основе колб и примеры наблюдателей.
Но я не знаю, как объединить два примера и выполнить их гладко.Кто-нибудь может привести простой пример?
Кроме того, мне интересно, могу ли я запустить наблюдателя-сторожа с работником Celery?
Спасибо
РЕДАКТИРОВАТЬ: я использовал работника сельдерея для запускаНаблюдатель-сторожевой таймер следит за каталогом и его подкаталогами следующим образом:
@celery.task(bind=True)
def _watcher(self):
observer = Observer()
handler = MyHandler()
observer.schedule(handler, '.')
observer.start()
try:
while True:
if not handler.event_q.empty():
event, ts = handler.event_q.get()
self.update_state(state='PROGRESS', meta={'src_path': event.src_path, 'event_type': event.event_type})
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
return {'src_path': 'srcpath', 'event_type': 'eventtype'}
Затем с внешней стороны он каждую 1 секунду вызывает функцию GET для обновления любых изменений, если они есть.Это немного глупо.
Чего я в конечном итоге хочу добиться, так это 1) продолжать следить за каталогом и его подкаталогами, 2) если есть какие-либо изменения, обновлять базу данных в соответствии с изменениями и 3) обновлять фронтКонечная сторона на основе изменений.
До сих пор я мог обновлять базу данных на основе изменений в файловой системе, используя watchdog (класс MyHandler в приведенном выше коде).Но я все еще ищу лучшее решение для наблюдения за изменениями в рамках фляги и для обновления изменений на стороне интерфейса.