Merge pull request #8064 from adityahase/fix-background-jobs
fix(scheduler): Show scheduler status
This commit is contained in:
commit
47235a2b98
5 changed files with 43 additions and 9 deletions
|
|
@ -115,9 +115,12 @@ def set_maintenance_mode(context, state, site=None):
|
|||
|
||||
@click.command('doctor') #Passing context always gets a site and if there is no use site it breaks
|
||||
@click.option('--site', help='site name')
|
||||
def doctor(site=None):
|
||||
@pass_context
|
||||
def doctor(context, site=None):
|
||||
"Get diagnostic info about background workers"
|
||||
from frappe.utils.doctor import doctor as _doctor
|
||||
if not site:
|
||||
site = get_site(context)
|
||||
return _doctor(site=site)
|
||||
|
||||
@click.command('show-pending-jobs')
|
||||
|
|
|
|||
|
|
@ -13,6 +13,12 @@ frappe.pages['background_jobs'].on_page_load = function(wrapper) {
|
|||
|
||||
frappe.pages['background_jobs'].on_page_show = function(wrapper) {
|
||||
frappe.pages.background_jobs.refresh_jobs();
|
||||
frappe.call({
|
||||
method: 'frappe.core.page.background_jobs.background_jobs.get_scheduler_status',
|
||||
callback: function(r) {
|
||||
frappe.pages.background_jobs.page.set_indicator(...r.message);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
frappe.pages.background_jobs.refresh_jobs = function() {
|
||||
|
|
|
|||
|
|
@ -7,6 +7,8 @@ import frappe
|
|||
from rq import Queue, Worker
|
||||
from frappe.utils.background_jobs import get_redis_conn
|
||||
from frappe.utils import format_datetime, cint
|
||||
from frappe.utils.scheduler import is_scheduler_inactive
|
||||
from frappe import _
|
||||
|
||||
colors = {
|
||||
'queued': 'orange',
|
||||
|
|
@ -49,3 +51,9 @@ def get_info(show_failed=False):
|
|||
for j in q.get_jobs()[:10]: add_job(j, q.name)
|
||||
|
||||
return jobs
|
||||
|
||||
@frappe.whitelist()
|
||||
def get_scheduler_status():
|
||||
if is_scheduler_inactive():
|
||||
return [_("Inactive"), "red"]
|
||||
return [_("Active"), "green"]
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import frappe.utils
|
|||
from collections import defaultdict
|
||||
from rq import Worker, Connection
|
||||
from frappe.utils.background_jobs import get_redis_conn, get_queue, get_queue_list
|
||||
from frappe.utils.scheduler import is_scheduler_disabled
|
||||
from frappe.utils.scheduler import is_scheduler_disabled, is_scheduler_inactive
|
||||
from six import iteritems
|
||||
|
||||
|
||||
|
|
@ -107,8 +107,19 @@ def doctor(site=None):
|
|||
for s in sites:
|
||||
frappe.init(s)
|
||||
frappe.connect()
|
||||
|
||||
if is_scheduler_disabled():
|
||||
print("Scheduler disabled for", s)
|
||||
|
||||
if frappe.local.conf.maintenance_mode:
|
||||
print("Maintenance mode on for", s)
|
||||
|
||||
if frappe.local.conf.pause_scheduler:
|
||||
print("Scheduler paused for", s)
|
||||
|
||||
if is_scheduler_inactive():
|
||||
print("Scheduler inactive for", s)
|
||||
|
||||
frappe.destroy()
|
||||
|
||||
# TODO improve this
|
||||
|
|
|
|||
|
|
@ -78,14 +78,8 @@ def enqueue_events_for_site(site, queued_jobs):
|
|||
|
||||
try:
|
||||
frappe.init(site=site)
|
||||
if frappe.local.conf.maintenance_mode:
|
||||
return
|
||||
|
||||
if frappe.local.conf.pause_scheduler:
|
||||
return
|
||||
|
||||
frappe.connect()
|
||||
if is_scheduler_disabled():
|
||||
if is_scheduler_inactive():
|
||||
return
|
||||
|
||||
enqueue_events(site=site, queued_jobs=queued_jobs)
|
||||
|
|
@ -225,6 +219,18 @@ def get_enabled_scheduler_events():
|
|||
return ["all", "hourly", "hourly_long", "daily", "daily_long",
|
||||
"weekly", "weekly_long", "monthly", "monthly_long", "cron"]
|
||||
|
||||
def is_scheduler_inactive():
|
||||
if frappe.local.conf.maintenance_mode:
|
||||
return True
|
||||
|
||||
if frappe.local.conf.pause_scheduler:
|
||||
return True
|
||||
|
||||
if is_scheduler_disabled():
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
def is_scheduler_disabled():
|
||||
if frappe.conf.disable_scheduler:
|
||||
return True
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue