瀏覽代碼

fix: Wrap timeout getting for custom queues in function (backport #15933) (#16054)

Co-authored-by: Lev Vereshchagin <mail@vrslev.com>
Co-authored-by: Gavin D'souza <gavin18d@gmail.com>
version-14
mergify[bot] 3 年之前
committed by GitHub
父節點
當前提交
a7cd6003ce
沒有發現已知的金鑰在資料庫的簽署中 GPG 金鑰 ID: 4AEE18F83AFDEB23
共有 1 個檔案被更改,包括 20 行新增15 行删除
  1. +20
    -15
      frappe/utils/background_jobs.py

+ 20
- 15
frappe/utils/background_jobs.py 查看文件

@@ -1,6 +1,7 @@
import os import os
import socket import socket
import time import time
from functools import lru_cache
from uuid import uuid4 from uuid import uuid4
from collections import defaultdict from collections import defaultdict
from typing import List from typing import List
@@ -20,18 +21,22 @@ from frappe.utils.redis_queue import RedisQueue
from frappe.utils.commands import log from frappe.utils.commands import log




common_site_config = frappe.get_file_json("common_site_config.json")
custom_workers_config = common_site_config.get("workers", {})
default_timeout = 300
queue_timeout = {
"default": default_timeout,
"short": default_timeout,
"long": 1500,
**{
worker: config.get("timeout", default_timeout)
for worker, config in custom_workers_config.items()

@lru_cache()
def get_queues_timeout():
common_site_config = frappe.get_conf()
custom_workers_config = common_site_config.get("workers", {})
default_timeout = 300

return {
"default": default_timeout,
"short": default_timeout,
"long": 1500,
**{
worker: config.get("timeout", default_timeout)
for worker, config in custom_workers_config.items()
}
} }
}


redis_connection = None redis_connection = None


@@ -57,7 +62,7 @@ def enqueue(method, queue='default', timeout=None, event=None,


q = get_queue(queue, is_async=is_async) q = get_queue(queue, is_async=is_async)
if not timeout: if not timeout:
timeout = queue_timeout.get(queue) or 300
timeout = get_queues_timeout().get(queue) or 300
queue_args = { queue_args = {
"site": frappe.local.site, "site": frappe.local.site,
"user": frappe.session.user, "user": frappe.session.user,
@@ -204,7 +209,7 @@ def get_jobs(site=None, queue=None, key='method'):


def get_queue_list(queue_list=None, build_queue_name=False): def get_queue_list(queue_list=None, build_queue_name=False):
'''Defines possible queues. Also wraps a given queue in a list after validating.''' '''Defines possible queues. Also wraps a given queue in a list after validating.'''
default_queue_list = list(queue_timeout)
default_queue_list = list(get_queues_timeout())
if queue_list: if queue_list:
if isinstance(queue_list, str): if isinstance(queue_list, str):
queue_list = [queue_list] queue_list = [queue_list]
@@ -236,7 +241,7 @@ def get_queue(qtype, is_async=True):


def validate_queue(queue, default_queue_list=None): def validate_queue(queue, default_queue_list=None):
if not default_queue_list: if not default_queue_list:
default_queue_list = list(queue_timeout)
default_queue_list = list(get_queues_timeout())


if queue not in default_queue_list: if queue not in default_queue_list:
frappe.throw(_("Queue should be one of {0}").format(', '.join(default_queue_list))) frappe.throw(_("Queue should be one of {0}").format(', '.join(default_queue_list)))
@@ -296,7 +301,7 @@ def generate_qname(qtype: str) -> str:
def is_queue_accessible(qobj: Queue) -> bool: def is_queue_accessible(qobj: Queue) -> bool:
"""Checks whether queue is relate to current bench or not. """Checks whether queue is relate to current bench or not.
""" """
accessible_queues = [generate_qname(q) for q in list(queue_timeout)]
accessible_queues = [generate_qname(q) for q in list(get_queues_timeout())]
return qobj.name in accessible_queues return qobj.name in accessible_queues


def enqueue_test_job(): def enqueue_test_job():


Loading…
取消
儲存