diff --git a/TODO b/TODO index 4d59484e5edc28a614ed9a0369175e79cc5209fe..98a58e30f8ed6caff1bc24b91d583638c84b96cf 100644 --- a/TODO +++ b/TODO @@ -1,4 +1,5 @@ -- select for update - Nasazení: - zkontrolovat rotování logů (i u /akce/mathletics/ a jiných instancí uwsgi) +- zapnout mule v uwsgi.ini +- upgradovat strukturu DB +- doplnit config.py diff --git a/etc/uwsgi.ini.example b/etc/uwsgi.ini.example index c8e1c202a890d64be117cc610cf7745527412d6c..c2559d9d8dc58418bcd62034287d6ae9eacd3eeb 100644 --- a/etc/uwsgi.ini.example +++ b/etc/uwsgi.ini.example @@ -18,5 +18,6 @@ mount = /osmo-test=mo.web:app plugin = python3 virtualenv = venv manage-script-name = true +mule static-map = /static=static diff --git a/mo/web/__init__.py b/mo/web/__init__.py index 31b84a900e0d3f7f6555981726960a8a910d97d5..5e52757de362ac0b74f1ee1810bb9ace8e3f4485 100644 --- a/mo/web/__init__.py +++ b/mo/web/__init__.py @@ -13,6 +13,7 @@ import werkzeug.exceptions import mo import mo.config as config import mo.db as db +import mo.jobs import mo.users import mo.util from mo.util import logger @@ -83,6 +84,39 @@ def init_request(): app.before_request(init_request) +### UWSGI glue ### + +try: + import uwsgi + from uwsgidecorators import timer, signal + + # Čas od času se probudíme a projdeme joby pro případ, že by se ztratil signál. + # Také při tom expirujeme zastaralé joby. + @timer(120, target='mule') + def mule_timer(signum): + app.logger.debug('Mule: Timer tick') + with app.app_context(): + mo.now = mo.util.get_now() + mo.jobs.process_jobs() + + # Obykle při vložení jobu dostaneme signál. + @signal(42, target='mule') + def mule_signal(signum): + app.logger.debug('Mule: Přijat signál') + with app.app_context(): + mo.now = mo.util.get_now() + mo.jobs.process_jobs() + + def wake_up_mule(): + app.logger.debug('Mule: Posíláme signál') + uwsgi.signal(42) + + mo.jobs.send_notify = wake_up_mule + +except ImportError: + app.logger.warn('Nenalezeno UWSGI, takže automatické notifikace nepoběží.') + + # Většina webu je v samostatných modulech import mo.web.auth import mo.web.menu diff --git a/setup.py b/setup.py index a7c8f036724d712cbfa5ff5c1402a08c22f8754d..e4d89a8bc5b95204265132509d238371a0c739c9 100644 --- a/setup.py +++ b/setup.py @@ -30,5 +30,6 @@ setuptools.setup( 'pikepdf', 'psycopg2', 'sqlalchemy', + 'uwsgidecorators', ], )