mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-07-05 20:51:15 -07:00
Schedule jobs using UTC to prevent tiggers in the past
This commit is contained in:
parent
43b350a1cc
commit
eea1cf1d2c
5 changed files with 25 additions and 17 deletions
|
@ -1,7 +1,7 @@
|
|||
<%
|
||||
import datetime
|
||||
from plexpy import helpers
|
||||
from plexpy.activity_handler import ACTIVITY_SCHED, schedule_callback
|
||||
import plexpy
|
||||
from plexpy import activity_handler, helpers
|
||||
|
||||
if queue == 'active sessions':
|
||||
filter_key = 'session_key-'
|
||||
|
@ -14,7 +14,7 @@
|
|||
title_key = title_format.format('Rating Key', 'Title')
|
||||
description = 'Queue to flush recently added items to the database and send notifications if enabled.'
|
||||
|
||||
scheduled_jobs = [j.id for j in ACTIVITY_SCHED.get_jobs() if j.id.startswith(filter_key)]
|
||||
scheduled_jobs = [j.id for j in activity_handler.ACTIVITY_SCHED.get_jobs() if j.id.startswith(filter_key)]
|
||||
%>
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
|
@ -44,13 +44,13 @@
|
|||
% if scheduled_jobs:
|
||||
% for job in scheduled_jobs:
|
||||
<%
|
||||
sched_job = ACTIVITY_SCHED.get_job(job)
|
||||
sched_job = activity_handler.ACTIVITY_SCHED.get_job(job)
|
||||
now = datetime.datetime.now(sched_job.next_run_time.tzinfo)
|
||||
%>
|
||||
<tr>
|
||||
<td><strong>${title_format.format(*sched_job.args)}</strong></td>
|
||||
<td>${helpers.format_timedelta_Hms(sched_job.next_run_time - now)}</td>
|
||||
<td>${sched_job.next_run_time.strftime('%Y-%m-%d %H:%M:%S')}</td>
|
||||
<td>${sched_job.next_run_time.astimezone(plexpy.SYS_TIMEZONE).strftime('%Y-%m-%d %H:%M:%S')}</td>
|
||||
</tr>
|
||||
% endfor
|
||||
% else:
|
||||
|
|
|
@ -39,7 +39,7 @@ DOCUMENTATION :: END
|
|||
<td><i class="fa fa-sm fa-fw fa-check"></i> Active</td>
|
||||
<td>${helpers.format_timedelta_Hms(sched_job.trigger.interval)}</td>
|
||||
<td>${helpers.format_timedelta_Hms(sched_job.next_run_time - now)}</td>
|
||||
<td>${sched_job.next_run_time.strftime('%Y-%m-%d %H:%M:%S')}</td>
|
||||
<td>${sched_job.next_run_time.astimezone(plexpy.SYS_TIMEZONE).strftime('%Y-%m-%d %H:%M:%S')}</td>
|
||||
</tr>
|
||||
% elif job in ('Check for server response', 'Check for active sessions', 'Check for recently added items') and plexpy.WS_CONNECTED:
|
||||
<tr>
|
||||
|
|
|
@ -71,7 +71,7 @@ PIDFILE = None
|
|||
NOFORK = False
|
||||
DOCKER = False
|
||||
|
||||
SCHED = BackgroundScheduler()
|
||||
SCHED = None
|
||||
SCHED_LOCK = threading.Lock()
|
||||
|
||||
NOTIFY_QUEUE = Queue()
|
||||
|
@ -509,11 +509,11 @@ def schedule_job(func, name, hours=0, minutes=0, seconds=0, args=None):
|
|||
logger.info(u"Removed background task: %s", name)
|
||||
elif job.trigger.interval != datetime.timedelta(hours=hours, minutes=minutes):
|
||||
SCHED.reschedule_job(name, trigger=IntervalTrigger(
|
||||
hours=hours, minutes=minutes, seconds=seconds), args=args)
|
||||
hours=hours, minutes=minutes, seconds=seconds, timezone=pytz.UTC), args=args)
|
||||
logger.info(u"Re-scheduled background task: %s", name)
|
||||
elif hours > 0 or minutes > 0 or seconds > 0:
|
||||
SCHED.add_job(func, id=name, trigger=IntervalTrigger(
|
||||
hours=hours, minutes=minutes, seconds=seconds), args=args)
|
||||
hours=hours, minutes=minutes, seconds=seconds, timezone=pytz.UTC), args=args)
|
||||
logger.info(u"Scheduled background task: %s", name)
|
||||
|
||||
|
||||
|
@ -521,6 +521,11 @@ def start():
|
|||
global _STARTED
|
||||
|
||||
if _INITIALIZED:
|
||||
global SCHED
|
||||
SCHED = BackgroundScheduler(timezone=pytz.UTC)
|
||||
activity_handler.ACTIVITY_SCHED = BackgroundScheduler(timezone=pytz.UTC)
|
||||
newsletter_handler.NEWSLETTER_SCHED = BackgroundScheduler(timezone=pytz.UTC)
|
||||
|
||||
# Start the scheduler for stale stream callbacks
|
||||
activity_handler.ACTIVITY_SCHED.start()
|
||||
|
||||
|
|
|
@ -17,8 +17,8 @@ import datetime
|
|||
import os
|
||||
import time
|
||||
|
||||
from apscheduler.schedulers.background import BackgroundScheduler
|
||||
from apscheduler.triggers.date import DateTrigger
|
||||
import pytz
|
||||
|
||||
import plexpy
|
||||
import activity_processor
|
||||
|
@ -29,7 +29,7 @@ import notification_handler
|
|||
import pmsconnect
|
||||
|
||||
|
||||
ACTIVITY_SCHED = BackgroundScheduler()
|
||||
ACTIVITY_SCHED = None
|
||||
|
||||
RECENTLY_ADDED_QUEUE = {}
|
||||
|
||||
|
@ -488,11 +488,13 @@ def schedule_callback(id, func=None, remove_job=False, args=None, **kwargs):
|
|||
else:
|
||||
ACTIVITY_SCHED.reschedule_job(
|
||||
id, args=args, trigger=DateTrigger(
|
||||
run_date=datetime.datetime.now() + datetime.timedelta(**kwargs)))
|
||||
run_date=datetime.datetime.now(pytz.UTC) + datetime.timedelta(**kwargs),
|
||||
timezone=pytz.UTC))
|
||||
elif not remove_job:
|
||||
ACTIVITY_SCHED.add_job(
|
||||
func, args=args, id=id, trigger=DateTrigger(
|
||||
run_date=datetime.datetime.now() + datetime.timedelta(**kwargs)))
|
||||
run_date=datetime.datetime.now(pytz.UTC) + datetime.timedelta(**kwargs),
|
||||
timezone=pytz.UTC))
|
||||
|
||||
|
||||
def force_stop_stream(session_key, title, user):
|
||||
|
|
|
@ -16,7 +16,6 @@
|
|||
import os
|
||||
import time
|
||||
|
||||
from apscheduler.schedulers.background import BackgroundScheduler
|
||||
from apscheduler.triggers.cron import CronTrigger
|
||||
import email.utils
|
||||
|
||||
|
@ -26,7 +25,7 @@ import logger
|
|||
import newsletters
|
||||
|
||||
|
||||
NEWSLETTER_SCHED = BackgroundScheduler()
|
||||
NEWSLETTER_SCHED = None
|
||||
|
||||
|
||||
def add_newsletter_each(newsletter_id=None, notify_action=None, **kwargs):
|
||||
|
@ -62,11 +61,13 @@ def schedule_newsletter_job(newsletter_job_id, name='', func=None, remove_job=Fa
|
|||
logger.info(u"Tautulli NewsletterHandler :: Removed scheduled newsletter: %s" % name)
|
||||
else:
|
||||
NEWSLETTER_SCHED.reschedule_job(
|
||||
newsletter_job_id, args=args, trigger=CronTrigger().from_crontab(cron))
|
||||
newsletter_job_id, args=args, trigger=CronTrigger().from_crontab(
|
||||
cron, timezone=plexpy.SYS_TIMEZONE))
|
||||
logger.info(u"Tautulli NewsletterHandler :: Re-scheduled newsletter: %s" % name)
|
||||
elif not remove_job:
|
||||
NEWSLETTER_SCHED.add_job(
|
||||
func, args=args, id=newsletter_job_id, trigger=CronTrigger.from_crontab(cron))
|
||||
func, args=args, id=newsletter_job_id, trigger=CronTrigger().from_crontab(
|
||||
cron, timezone=plexpy.SYS_TIMEZONE))
|
||||
logger.info(u"Tautulli NewsletterHandler :: Scheduled newsletter: %s" % name)
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue