Skip to content

Commit b83fc22

Browse files
committed
Add APScheduler for cron job management
- Introduced APScheduler as a dependency in `pyproject.toml` to facilitate scheduled tasks. - Implemented a cron job in `main.py` that triggers the `trigger_cron` function every minute. - Created a new `trigger_cron.py` file to define the task executed by the scheduler. This enhancement allows for periodic execution of tasks, improving the application's scheduling capabilities.
1 parent eb5acab commit b83fc22

4 files changed

Lines changed: 56 additions & 0 deletions

File tree

state-manager/app/main.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,17 @@
3333

3434
# importing database health check function
3535
from .utils.check_database_health import check_database_health
36+
37+
#scheduler
38+
from apscheduler.schedulers.asyncio import AsyncIOScheduler
39+
from apscheduler.triggers.cron import CronTrigger
40+
from .tasks.trigger_cron import trigger_cron
3641

3742
# Define models list
3843
DOCUMENT_MODELS = [State, GraphTemplate, RegisteredNode, Store, Run, DatabaseTriggers]
3944

45+
scheduler = AsyncIOScheduler()
46+
4047
@asynccontextmanager
4148
async def lifespan(app: FastAPI):
4249
# begaining of the server
@@ -60,11 +67,20 @@ async def lifespan(app: FastAPI):
6067
# perform database health check
6168
await check_database_health(DOCUMENT_MODELS)
6269

70+
scheduler.add_job(
71+
trigger_cron,
72+
CronTrigger.from_crontab("* * * * *"),
73+
replace_existing=True,
74+
id="every_minute_task"
75+
)
76+
scheduler.start()
77+
6378
# main logic of the server
6479
yield
6580

6681
# end of the server
6782
await client.close()
83+
scheduler.shutdown()
6884
logger.info("server stopped")
6985

7086

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
from datetime import datetime
2+
3+
async def trigger_cron():
4+
print(f"From trigger_cron: {datetime.now()}")

state-manager/pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ description = "Add your description here"
99
readme = "README.md"
1010
requires-python = ">=3.12"
1111
dependencies = [
12+
"apscheduler>=3.11.0",
1213
"beanie>=2.0.0",
1314
"croniter>=6.0.0",
1415
"cryptography>=45.0.5",

state-manager/uv.lock

Lines changed: 35 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)