работа с публикацией
This commit is contained in:
+61
-3
@@ -1,7 +1,65 @@
|
||||
from apscheduler.schedulers.background import BackgroundScheduler
|
||||
from apscheduler.triggers.cron import CronTrigger
|
||||
|
||||
from db import PostScheduler
|
||||
|
||||
|
||||
# ===== Scheduler =====
|
||||
scheduler: BackgroundScheduler | None = None
|
||||
JOB_ID = "vk_publish_job"
|
||||
|
||||
|
||||
def start_scheduler():
|
||||
scheduler = BackgroundScheduler()
|
||||
# scheduler.add_job(publish_vk_posts, "interval", seconds=30)
|
||||
scheduler.start()
|
||||
global scheduler
|
||||
if scheduler is None:
|
||||
scheduler = BackgroundScheduler()
|
||||
scheduler.start()
|
||||
|
||||
|
||||
# ===== Добавление задачи =====
|
||||
def enable_publish_job():
|
||||
"""
|
||||
Включает выполнение handle_vk_post
|
||||
"""
|
||||
from vk_handler import handle_vk_post
|
||||
|
||||
scheduleData = PostScheduler.query.first()
|
||||
if not scheduleData or not scheduleData.enabled:
|
||||
return
|
||||
|
||||
start_hour = scheduleData.start_hour
|
||||
end_hour = scheduleData.end_hour
|
||||
interval_minutes = scheduleData.interval_minutes
|
||||
|
||||
trigger = CronTrigger(
|
||||
hour=f"{start_hour}-{end_hour - 1}", minute=f"*/{interval_minutes}"
|
||||
)
|
||||
|
||||
scheduler.add_job(handle_vk_post, trigger=trigger, id=JOB_ID, replace_existing=True)
|
||||
|
||||
|
||||
# ===== Отключение задачи =====
|
||||
def disable_publish_job():
|
||||
if scheduler and scheduler.get_job(JOB_ID):
|
||||
scheduler.remove_job(JOB_ID)
|
||||
|
||||
|
||||
def get_scheduler_status() -> dict:
|
||||
scheduler_running = bool(scheduler and scheduler.running)
|
||||
|
||||
job = scheduler.get_job(JOB_ID) if scheduler_running else None
|
||||
|
||||
status = {
|
||||
"scheduler": scheduler_running,
|
||||
"vk_publish_job": job is not None,
|
||||
"next_run_time": None,
|
||||
}
|
||||
|
||||
if job:
|
||||
status["next_run_time"] = (
|
||||
job.next_run_time.strftime("%Y-%m-%d %H:%M:%S")
|
||||
if job.next_run_time
|
||||
else None
|
||||
)
|
||||
|
||||
return status
|
||||
|
||||
Reference in New Issue
Block a user