refactor: misleading "log and raise" and types

This commit is contained in:
Ankush Menat 2022-12-14 11:44:39 +05:30 committed by Ankush Menat
parent 1fc2639123
commit 82d699a801

View file

@ -11,6 +11,7 @@ Events:
# imports - standard imports
import os
import time
from typing import NoReturn
# imports - module imports
import frappe
@ -30,7 +31,7 @@ def cprint(*args, **kwargs):
pass
def start_scheduler():
def start_scheduler() -> NoReturn:
"""Run enqueue_events_for_all_sites based on scheduler tick.
Specify scheduler_interval in seconds in common_site_config.json"""
@ -41,7 +42,7 @@ def start_scheduler():
enqueue_events_for_all_sites()
def enqueue_events_for_all_sites():
def enqueue_events_for_all_sites() -> None:
"""Loop through sites and enqueue events that are not already queued"""
if os.path.exists(os.path.join(".", ".restarting")):
@ -54,16 +55,13 @@ def enqueue_events_for_all_sites():
for site in sites:
try:
enqueue_events_for_site(site=site)
except Exception as e:
print(e.__class__, f"Failed to enqueue events for site: {site}")
except Exception:
frappe.logger("scheduler").debug(f"Failed to enqueue events for site: {site}", exc_info=True)
def enqueue_events_for_site(site):
def log_and_raise():
error_message = "Exception in Enqueue Events for Site {}\n{}".format(
site, frappe.get_traceback()
)
frappe.logger("scheduler").error(error_message)
def enqueue_events_for_site(site: str) -> None:
def log_exc():
frappe.logger("scheduler").error(f"Exception in Enqueue Events for Site {site}", exc_info=True)
try:
frappe.init(site=site)
@ -74,29 +72,26 @@ def enqueue_events_for_site(site):
enqueue_events(site=site)
frappe.logger("scheduler").debug(f"Queued events for site {site}")
except frappe.db.OperationalError as e:
except Exception as e:
if frappe.db.is_access_denied(e):
frappe.logger("scheduler").debug(f"Access denied for site {site}")
else:
log_and_raise()
except Exception:
log_and_raise()
log_exc()
finally:
frappe.destroy()
def enqueue_events(site):
def enqueue_events(site: str) -> None:
if schedule_jobs_based_on_activity():
frappe.flags.enqueued_jobs = []
queued_jobs = get_jobs(site=site, key="job_type").get(site) or []
for job_type in frappe.get_all("Scheduled Job Type", ("name", "method"), dict(stopped=0)):
if not job_type.method in queued_jobs:
# don't add it to queue if still pending
frappe.get_doc("Scheduled Job Type", job_type.name).enqueue()
frappe.get_cached_doc("Scheduled Job Type", job_type.name).enqueue()
def is_scheduler_inactive():
def is_scheduler_inactive() -> bool:
if frappe.local.conf.maintenance_mode:
cprint(f"{frappe.local.site}: Maintenance mode is ON")
return True
@ -111,7 +106,7 @@ def is_scheduler_inactive():
return False
def is_scheduler_disabled():
def is_scheduler_disabled() -> bool:
if frappe.conf.disable_scheduler:
cprint(f"{frappe.local.site}: frappe.conf.disable_scheduler is SET")
return True