Skip to content

Commit 837dbcb

Browse files
committed
Call the credit update function
1 parent 375b05a commit 837dbcb

File tree

4 files changed

+75
-5
lines changed

4 files changed

+75
-5
lines changed

app/core/scheduler.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
from apscheduler.schedulers.asyncio import AsyncIOScheduler
2+
from apscheduler.triggers.cron import CronTrigger
3+
from app.services.credits import CreditService
4+
5+
scheduler = AsyncIOScheduler()
6+
7+
def init_schedulers():
8+
scheduler.add_job(
9+
CreditService.refresh_daily_credits,
10+
trigger=CronTrigger(hour=0, minute=0), # Run at midnight
11+
id='refresh_credits',
12+
name='Refresh daily credits',
13+
replace_existing=True
14+
)
15+
scheduler.start()

main.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
from slowapi.errors import RateLimitExceeded
55
from slowapi import _rate_limit_exceeded_handler
66
from app.core.config import settings
7+
from contextlib import asynccontextmanager
8+
from app.core.scheduler import init_schedulers, scheduler
79

810
from app.services.analyzer import init_nltk_resources
911
import app.api.v1.routes as v1
@@ -13,9 +15,19 @@
1315
os.environ.clear()
1416
load_dotenv(override=True)
1517

18+
@asynccontextmanager
19+
async def lifespan(app: FastAPI):
20+
# Startup
21+
init_schedulers()
22+
init_nltk_resources()
23+
yield
24+
# Shutdown
25+
scheduler.shutdown()
26+
1627
# Main app for requests at the base url. This will serve documentation etc, but all API endpoints must go to a versioned one.
1728
app = FastAPI(
18-
title=settings.PROJECT_NAME
29+
title=settings.PROJECT_NAME,
30+
lifespan=lifespan,
1931
)
2032

2133
### V1 ###
@@ -28,8 +40,6 @@
2840
v1_app.include_router(v1.auth.router)
2941
### /V1 ###
3042

31-
init_nltk_resources()
32-
3343
ACCESS_CONTROL_ALLOW_CREDENTIALS = os.environ.get(
3444
'ACCESS_CONTROL_ALLOW_CREDENTIALS',
3545
True)
@@ -50,4 +60,4 @@
5060
allow_headers=ACCESS_CONTROL_ALLOW_HEADERS
5161
)
5262

53-
app.add_exception_handler(RateLimitExceeded, _rate_limit_exceeded_handler)
63+
app.add_exception_handler(RateLimitExceeded, _rate_limit_exceeded_handler)

poetry.lock

Lines changed: 45 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ openpyxl = "^3.1.5"
3030
pytest-asyncio = "^0.25.2"
3131
supabase = "^2.11.0"
3232
supabase-pydantic = "^0.15.2"
33+
apscheduler = "^3.11.0"
3334

3435

3536
[tool.poetry.group.dev.dependencies]

0 commit comments

Comments
 (0)