This commit is contained in:
6
scheduler/jobs.py
Normal file
6
scheduler/jobs.py
Normal file
@ -0,0 +1,6 @@
|
||||
from utils.logger import logger
|
||||
import datetime
|
||||
|
||||
|
||||
def job_heartbeat():
|
||||
logger.info(f"[heartbeat] {datetime.datetime.now()}")
|
||||
37
scheduler/scheduler.py
Normal file
37
scheduler/scheduler.py
Normal file
@ -0,0 +1,37 @@
|
||||
from apscheduler.schedulers.background import BackgroundScheduler
|
||||
from apscheduler.executors.pool import ThreadPoolExecutor, ProcessPoolExecutor
|
||||
from apscheduler.jobstores.sqlalchemy import SQLAlchemyJobStore
|
||||
from loguru import logger
|
||||
from config.settings import settings
|
||||
|
||||
SCHEDULER_DB_URL = (
|
||||
f"postgresql+psycopg://{settings.DB_USER}:{settings.DB_PASS}"
|
||||
f"@{settings.DB_HOST}:{settings.DB_PORT}/{settings.DB_NAME}"
|
||||
)
|
||||
|
||||
def create_scheduler():
|
||||
job_stores = {
|
||||
"default": SQLAlchemyJobStore(url=SCHEDULER_DB_URL)
|
||||
}
|
||||
|
||||
executors = {
|
||||
"default": ThreadPoolExecutor(10),
|
||||
"processpool": ProcessPoolExecutor(2)
|
||||
}
|
||||
|
||||
job_defaults = {
|
||||
"coalesce": False, # 重叠任务处理
|
||||
"max_instances": 3
|
||||
}
|
||||
|
||||
scheduler = BackgroundScheduler(
|
||||
# jobstores=job_stores,
|
||||
executors=executors,
|
||||
job_defaults=job_defaults,
|
||||
timezone=settings.TIMEZONE,
|
||||
)
|
||||
|
||||
return scheduler
|
||||
|
||||
|
||||
scheduler = create_scheduler()
|
||||
Reference in New Issue
Block a user