加班慢问题
This commit is contained in:
@@ -8,4 +8,5 @@ from . import yuthon_phone_lottery
|
||||
from . import res_partner
|
||||
from . import base_month_year
|
||||
from . import system_logs
|
||||
from . import res_users
|
||||
from . import res_users
|
||||
from . import mail_thread
|
||||
@@ -0,0 +1,43 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html).
|
||||
|
||||
from odoo import models
|
||||
import json
|
||||
|
||||
|
||||
class MailThread(models.AbstractModel):
|
||||
_inherit = "mail.thread"
|
||||
|
||||
def _notify_by_web_push(self, message, recipients_data, msg_vals=False):
|
||||
"""
|
||||
重写 Web Push 通知方法,强制使用异步发送方式,
|
||||
避免同步发送导致的请求阻塞问题(如加班审批转交按钮反应慢)。
|
||||
"""
|
||||
msg_vals = dict(msg_vals or {})
|
||||
partner_ids = self._extract_partner_ids_for_notifications(message, msg_vals, recipients_data)
|
||||
if not partner_ids:
|
||||
return
|
||||
|
||||
partner_devices_sudo = self.env['mail.partner.device'].sudo()
|
||||
devices = partner_devices_sudo.search([
|
||||
('partner_id', 'in', partner_ids)
|
||||
])
|
||||
if not devices:
|
||||
return
|
||||
|
||||
ir_parameter_sudo = self.env['ir.config_parameter'].sudo()
|
||||
vapid_private_key = ir_parameter_sudo.get_param('mail.web_push_vapid_private_key')
|
||||
vapid_public_key = ir_parameter_sudo.get_param('mail.web_push_vapid_public_key')
|
||||
if not vapid_private_key or not vapid_public_key:
|
||||
return
|
||||
|
||||
payload = self._notify_by_web_push_prepare_payload(message, msg_vals=msg_vals)
|
||||
payload = self._truncate_payload(payload)
|
||||
|
||||
# 强制使用异步发送方式
|
||||
# 不再同步调用 push_to_end_point,避免阻塞请求
|
||||
self.env['mail.notification.web.push'].sudo().create([{
|
||||
'user_device': device.id,
|
||||
'payload': json.dumps(payload),
|
||||
} for device in devices])
|
||||
self.env.ref('mail.ir_cron_web_push_notification')._trigger()
|
||||
Reference in New Issue
Block a user