Создание потоков в webpy приложениях
Может кому-то и пригодится.
Столкнулся с необходимостью написания скрипта для мониторинга серверов. Основное приложение - выводит результат мониторинга, а дополни
тельный поток по таймеру собирает информацию.
В webpy есть пару ф-ций для подобных целей: декоратор @web.background() для выполнения "долговыполняемых" ф-ций и web.load() который разрешает создавать тред в приложении (как написано в доках "Loads a new context for the thread.", хз как по-русски сказать). web.load() вызывается до создания треда.
Простой пример, выводящий время, время проверяется раз в 5 секунд:
- import web
- import threading
- import time
- def check_time():
- result = ""
- global result
- while 1:
- result = time.strftime("%H:%M:%S", time.localtime())
- print "result updated"
- time.sleep(5)
- urls = (
- "/", "main_app"
- )
- class main_app:
- def GET(self):
- yield result
- web.load()
- checker = threading.Thread(target=check_time,name='check_time_thrd')
- checker.setDaemon(True)
- checker.start()
- if __name__ == "__main__":