diff --git a/frappe/utils/background_jobs.py b/frappe/utils/background_jobs.py index e1672e1a55..815145ef70 100644 --- a/frappe/utils/background_jobs.py +++ b/frappe/utils/background_jobs.py @@ -277,22 +277,6 @@ def execute_job(site, method, event, job_name, kwargs, user=None, is_async=True, frappe.destroy() -class FrappeWorker(Worker): - def work(self, *args, **kwargs): - self.start_frappe_scheduler() - return super().work(*args, **kwargs) - - def run_maintenance_tasks(self, *args, **kwargs): - """Attempt to start a scheduler in case the worker doing scheduling died.""" - self.start_frappe_scheduler() - return super().run_maintenance_tasks(*args, **kwargs) - - def start_frappe_scheduler(self): - from frappe.utils.scheduler import start_scheduler - - Thread(target=start_scheduler, daemon=True).start() - - def start_worker( queue: str | None = None, quiet: bool = False, @@ -300,7 +284,7 @@ def start_worker( rq_password: str | None = None, burst: bool = False, strategy: DequeueStrategy | None = DequeueStrategy.DEFAULT, -) -> None: # pragma: no cover +) -> NoReturn: # pragma: no cover """Wrapper to start rq worker. Connects to redis and monitors these queues.""" if not strategy: @@ -336,6 +320,23 @@ def start_worker( ) +class FrappeWorker(Worker): + def work(self, *args, **kwargs): + self.start_frappe_scheduler() + kwargs["with_scheduler"] = False # Always disable RQ scheduler + return super().work(*args, **kwargs) + + def run_maintenance_tasks(self, *args, **kwargs): + """Attempt to start a scheduler in case the worker doing scheduling died.""" + self.start_frappe_scheduler() + return super().run_maintenance_tasks(*args, **kwargs) + + def start_frappe_scheduler(self): + from frappe.utils.scheduler import start_scheduler + + Thread(target=start_scheduler, daemon=True).start() + + def start_worker_pool( queue: str | None = None, num_workers: int = 1, diff --git a/pyproject.toml b/pyproject.toml index b1f5456624..67d98546e1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -63,7 +63,7 @@ dependencies = [ "setproctitle~=1.3.3", "requests-oauthlib~=1.3.1", "requests~=2.32.0", - "rq==1.15.1", + "rq==1.16.2", "rsa>=4.1", "semantic-version~=2.10.0", "sentry-sdk~=1.37.1",