diff --git a/.env.example b/.env.example
@@ -41,3 +41,9 @@ UVICORN_PORT = 8000
# VITE_BASE_API="https://example.com/api/"
# JWT_ACCESS_TOKEN_EXPIRE_MINUTES = 1440
# AUTH_GENERATION_ALGORITHM=xxh128
+
+## Scheduled Tasks Interval in Seconds
+# TASKS_RECORD_USER_USAGES_INTERVAL=30
+# TASKS_REVIEW_USERS_INTERVAL=30
+# TASKS_EXPIRE_DAYS_REACHED_INTERVAL=30
+# TASKS_RESET_USER_DATA_USAGE=3600
diff --git a/app/config/env.py b/app/config/env.py
@@ -1,6 +1,7 @@
+from enum import Enum
+
from decouple import config
from dotenv import load_dotenv
-from enum import Enum
load_dotenv()
@@ -105,3 +106,16 @@ NOTIFY_DAYS_LEFT = config("NOTIFY_DAYS_LEFT", default=3, cast=int)
DISABLE_RECORDING_NODE_USAGE = config(
"DISABLE_RECORDING_NODE_USAGE", cast=bool, default=False
)
+
+TASKS_RECORD_USER_USAGES_INTERVAL = config(
+ "TASKS_RECORD_USER_USAGES_INTERVAL", default=30, cast=int
+)
+TASKS_REVIEW_USERS_INTERVAL = config(
+ "TASKS_REVIEW_USERS_INTERVAL", default=30, cast=int
+)
+TASKS_EXPIRE_DAYS_REACHED_INTERVAL = config(
+ "TASKS_EXPIRE_DAYS_REACHED_INTERVAL", default=30, cast=int
+)
+TASKS_RESET_USER_DATA_USAGE = config(
+ "TASKS_RESET_USER_DATA_USAGE", default=3600, cast=int
+)
diff --git a/app/marzneshin.py b/app/marzneshin.py
@@ -22,6 +22,10 @@ from app.config.env import (
UVICORN_SSL_KEYFILE,
UVICORN_UDS,
DASHBOARD_PATH,
+ TASKS_RECORD_USER_USAGES_INTERVAL,
+ TASKS_REVIEW_USERS_INTERVAL,
+ TASKS_EXPIRE_DAYS_REACHED_INTERVAL,
+ TASKS_RESET_USER_DATA_USAGE,
)
from app.templates import render_template
from . import __version__
@@ -74,14 +78,32 @@ app.add_middleware(
)
scheduler = AsyncIOScheduler(timezone="UTC")
-scheduler.add_job(record_user_usages, "interval", coalesce=True, seconds=30)
scheduler.add_job(
- review_users, "interval", seconds=30, coalesce=True, max_instances=1
+ record_user_usages,
+ "interval",
+ coalesce=True,
+ seconds=TASKS_RECORD_USER_USAGES_INTERVAL,
+)
+scheduler.add_job(
+ review_users,
+ "interval",
+ seconds=TASKS_REVIEW_USERS_INTERVAL,
+ coalesce=True,
+ max_instances=1,
)
scheduler.add_job(
- expire_days_reached, "interval", seconds=30, coalesce=True, max_instances=1
+ expire_days_reached,
+ "interval",
+ seconds=TASKS_EXPIRE_DAYS_REACHED_INTERVAL,
+ coalesce=True,
+ max_instances=1,
+)
+scheduler.add_job(
+ reset_user_data_usage,
+ "interval",
+ seconds=TASKS_RESET_USER_DATA_USAGE,
+ coalesce=True,
)
-scheduler.add_job(reset_user_data_usage, "interval", coalesce=True, hours=1)
@app.exception_handler(RequestValidationError)