From 83ed0677f07012b1b8da5637b149549e9d3f1922 Mon Sep 17 00:00:00 2001 From: Samuel Olwe Date: Fri, 30 May 2025 16:55:22 +0300 Subject: [PATCH 01/12] feat: run scheduled tasks after startup --- webapp/scheduled_tasks.py | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/webapp/scheduled_tasks.py b/webapp/scheduled_tasks.py index 1acad84e..11d0cbdc 100644 --- a/webapp/scheduled_tasks.py +++ b/webapp/scheduled_tasks.py @@ -3,6 +3,7 @@ from datetime import datetime from pathlib import Path +from flask import Flask import yaml from flask import Flask @@ -84,16 +85,6 @@ def update_jira_statuses() -> None: site_repository.invalidate_cache() -@register_task(delay=1) -def scheduled_tasks_alert() -> None: - """Run every second to test the task scheduler.""" - app = create_app() - with app.app_context(): - timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S") - message = f"[ALERT][{timestamp}] Scheduled tasks running successfully." - logger.debug(message) - - def init_scheduled_tasks(app: Flask) -> None: @app.before_request def start_tasks(): @@ -101,4 +92,3 @@ def start_tasks(): app.before_request_funcs[None].remove(start_tasks) update_jira_statuses() load_site_trees() - scheduled_tasks_alert() From 285943052f1ffa57442f425abff549f508826d22 Mon Sep 17 00:00:00 2001 From: Samuel Olwe Date: Wed, 4 Jun 2025 14:24:50 +0300 Subject: [PATCH 02/12] feat: dont start celery app without redis --- webapp/celery.py | 1 + 1 file changed, 1 insertion(+) diff --git a/webapp/celery.py b/webapp/celery.py index 4b3f4a6d..84e27604 100644 --- a/webapp/celery.py +++ b/webapp/celery.py @@ -1,5 +1,6 @@ import os from collections.abc import Callable +from typing import Optional from celery import Celery, Task from celery.app import Proxy From f0cdec8822a0982df979993dfe97750f827507ad Mon Sep 17 00:00:00 2001 From: Samuel Olwe Date: Wed, 4 Jun 2025 14:26:10 +0300 Subject: [PATCH 03/12] feat: handle empty query results --- webapp/scheduled_tasks.py | 1 + 1 file changed, 1 insertion(+) diff --git a/webapp/scheduled_tasks.py b/webapp/scheduled_tasks.py index 11d0cbdc..038910a1 100644 --- a/webapp/scheduled_tasks.py +++ b/webapp/scheduled_tasks.py @@ -92,3 +92,4 @@ def start_tasks(): app.before_request_funcs[None].remove(start_tasks) update_jira_statuses() load_site_trees() + From d88dc50c48a5dfa308cbbefd2c428a490cb22102 Mon Sep 17 00:00:00 2001 From: Samuel Olwe Date: Thu, 5 Jun 2025 12:54:25 +0300 Subject: [PATCH 04/12] fix: connect to redis if connect string exists --- webapp/cache.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webapp/cache.py b/webapp/cache.py index b686d89e..4d3406e3 100644 --- a/webapp/cache.py +++ b/webapp/cache.py @@ -3,7 +3,7 @@ import shutil from abc import ABC, abstractmethod from pathlib import Path -from typing import Any +from typing import Any, Optional import redis from flask import Flask From 3a6fde811a938121f72f9813f1bdea9013d20151 Mon Sep 17 00:00:00 2001 From: Samuel Olwe Date: Thu, 5 Jun 2025 13:18:12 +0300 Subject: [PATCH 05/12] fix: lint --- webapp/cache.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webapp/cache.py b/webapp/cache.py index 4d3406e3..b686d89e 100644 --- a/webapp/cache.py +++ b/webapp/cache.py @@ -3,7 +3,7 @@ import shutil from abc import ABC, abstractmethod from pathlib import Path -from typing import Any, Optional +from typing import Any import redis from flask import Flask From eba3c8ef86d41761cc79f599768727f2b13d88a1 Mon Sep 17 00:00:00 2001 From: Samuel Olwe Date: Thu, 5 Jun 2025 16:34:42 +0300 Subject: [PATCH 06/12] feat: use logger for tree task --- webapp/scheduled_tasks.py | 1 - 1 file changed, 1 deletion(-) diff --git a/webapp/scheduled_tasks.py b/webapp/scheduled_tasks.py index 038910a1..11d0cbdc 100644 --- a/webapp/scheduled_tasks.py +++ b/webapp/scheduled_tasks.py @@ -92,4 +92,3 @@ def start_tasks(): app.before_request_funcs[None].remove(start_tasks) update_jira_statuses() load_site_trees() - From a188325af38a61385ef9125deb749f7341792fea Mon Sep 17 00:00:00 2001 From: Samuel Olwe Date: Tue, 17 Jun 2025 15:34:02 +0300 Subject: [PATCH 07/12] fix: lint --- webapp/models.py | 1 - 1 file changed, 1 deletion(-) diff --git a/webapp/models.py b/webapp/models.py index ac505c50..f29258bd 100644 --- a/webapp/models.py +++ b/webapp/models.py @@ -3,7 +3,6 @@ import yaml from flask import Flask -from flask_migrate import Migrate from flask_sqlalchemy import SQLAlchemy from sqlalchemy import ( Column, From 4e683ab13db88c94f0d9851d414e388c610723cf Mon Sep 17 00:00:00 2001 From: Samuel Olwe Date: Tue, 17 Jun 2025 20:02:51 +0300 Subject: [PATCH 08/12] feat: instantiate flask migrate on startup --- webapp/models.py | 1 + 1 file changed, 1 insertion(+) diff --git a/webapp/models.py b/webapp/models.py index f29258bd..ac505c50 100644 --- a/webapp/models.py +++ b/webapp/models.py @@ -3,6 +3,7 @@ import yaml from flask import Flask +from flask_migrate import Migrate from flask_sqlalchemy import SQLAlchemy from sqlalchemy import ( Column, From 7255e5f36bfbb9e26277cab609d0cf5aa104af84 Mon Sep 17 00:00:00 2001 From: Samuel Olwe Date: Wed, 18 Jun 2025 10:36:17 +0300 Subject: [PATCH 09/12] feat: use local runner for scheduled tasks --- webapp/celery.py | 1 - 1 file changed, 1 deletion(-) diff --git a/webapp/celery.py b/webapp/celery.py index 84e27604..4b3f4a6d 100644 --- a/webapp/celery.py +++ b/webapp/celery.py @@ -1,6 +1,5 @@ import os from collections.abc import Callable -from typing import Optional from celery import Celery, Task from celery.app import Proxy From e4460baa498af56a21092bc8c1c720af6fcee1cf Mon Sep 17 00:00:00 2001 From: Samuel Olwe Date: Wed, 18 Jun 2025 10:37:39 +0300 Subject: [PATCH 10/12] feat: added cloning lock --- webapp/scheduled_tasks.py | 1 - 1 file changed, 1 deletion(-) diff --git a/webapp/scheduled_tasks.py b/webapp/scheduled_tasks.py index 11d0cbdc..890a223c 100644 --- a/webapp/scheduled_tasks.py +++ b/webapp/scheduled_tasks.py @@ -3,7 +3,6 @@ from datetime import datetime from pathlib import Path -from flask import Flask import yaml from flask import Flask From 0b14c6fae39a54f86a95f7c8ac637c0deb76ed24 Mon Sep 17 00:00:00 2001 From: Samuel Olwe Date: Wed, 18 Jun 2025 11:09:44 +0300 Subject: [PATCH 11/12] feat: added status check for background tasks --- webapp/scheduled_tasks.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/webapp/scheduled_tasks.py b/webapp/scheduled_tasks.py index 890a223c..1acad84e 100644 --- a/webapp/scheduled_tasks.py +++ b/webapp/scheduled_tasks.py @@ -84,6 +84,16 @@ def update_jira_statuses() -> None: site_repository.invalidate_cache() +@register_task(delay=1) +def scheduled_tasks_alert() -> None: + """Run every second to test the task scheduler.""" + app = create_app() + with app.app_context(): + timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S") + message = f"[ALERT][{timestamp}] Scheduled tasks running successfully." + logger.debug(message) + + def init_scheduled_tasks(app: Flask) -> None: @app.before_request def start_tasks(): @@ -91,3 +101,4 @@ def start_tasks(): app.before_request_funcs[None].remove(start_tasks) update_jira_statuses() load_site_trees() + scheduled_tasks_alert() From 5b9979148e896fcb44068b816f5c54ed1e803c2d Mon Sep 17 00:00:00 2001 From: Samuel Olwe Date: Wed, 18 Jun 2025 15:55:21 +0300 Subject: [PATCH 12/12] fix: formatted log message --- webapp/tasklib.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/webapp/tasklib.py b/webapp/tasklib.py index 47561af5..8a1b4b23 100644 --- a/webapp/tasklib.py +++ b/webapp/tasklib.py @@ -105,10 +105,9 @@ def register_local_task( func: Callable, delay: int | None, ) -> Task: - """ - Register a local task. - """ - logger.info("INFO [Registered task]", func.__name__) + """Register a local task.""" + msg = f"INFO [Registered task] {func.__name__}" + logger.info(msg) return Task( fn=func,