工单短信用多线程发送

This commit is contained in:
曹前明 2022-10-03 13:26:50 +08:00
parent 7a3c46c8f1
commit 1042724b70
5 changed files with 32 additions and 12 deletions

View File

@ -63,6 +63,7 @@ def cal_area_count():
""" """
for i in Area.objects.filter(type=Area.AREA_TYPE_FIX): for i in Area.objects.filter(type=Area.AREA_TYPE_FIX):
Thread(target=update_count_people, args=(i,), daemon=True).start() Thread(target=update_count_people, args=(i,), daemon=True).start()
time.sleep(1)
@shared_task @shared_task
@ -90,5 +91,3 @@ def opl_task(vc_codes: list, opl_id: str):
for i in vchannels: for i in vchannels:
Thread(target=snap_and_analyse, args=(i, algo_codes, opl)).start() Thread(target=snap_and_analyse, args=(i, algo_codes, opl)).start()
time.sleep(10) time.sleep(10)
opl.mtask = None
opl.save()

View File

@ -134,8 +134,6 @@ def opl_end(ticket: Ticket):
if opl.mtask: if opl.mtask:
# 关闭作业视频监控任务 # 关闭作业视频监控任务
close_mtask(opl.mtask.task_id) close_mtask(opl.mtask.task_id)
opl.mtask = None
opl.save()
operation = opl.operation operation = opl.operation
opls = Opl.objects.filter(operation=operation) opls = Opl.objects.filter(operation=operation)
opls.filter(ticket=None).delete() # 删除无用许可证 opls.filter(ticket=None).delete() # 删除无用许可证

View File

@ -106,8 +106,6 @@ class OplViewSet(CustomModelViewSet):
# 防止没变化,手动处理一下 # 防止没变化,手动处理一下
mtask.status = 'REVOKED' mtask.status = 'REVOKED'
mtask.save() mtask.save()
obj.mtask = None
obj.save()
return Response() return Response()

View File

@ -1,11 +1,18 @@
# Create your tasks here # Create your tasks here
from __future__ import absolute_import, unicode_literals from __future__ import absolute_import, unicode_literals
from random import random, randint from datetime import timedelta
from apps.utils.tasks import CustomTask from apps.utils.tasks import CustomTask
from celery import shared_task from celery import shared_task
from django.core.mail import send_mail from django_celery_results.models import TaskResult
from django.utils import timezone
@shared_task(base=CustomTask) @shared_task(base=CustomTask)
def show(x=1): def cleanup_dcr():
return 40/int(x) """清空三十日前的定时任务执行记录
清空三十日前的定时任务执行记录
"""
now = timezone.now()
days30_ago = now - timedelta(days=30)
TaskResult.objects.filter(periodic_task_name__isnull=False, date_done__lte=days30_ago).delete()

View File

@ -1,4 +1,6 @@
import importlib import importlib
from threading import Thread
from apps.utils.sms import send_sms
from apps.wf.serializers import TicketSimpleSerializer from apps.wf.serializers import TicketSimpleSerializer
from apps.system.models import Dept, User from apps.system.models import Dept, User
from apps.wf.models import CustomField, State, Ticket, TicketFlow, Transition, Workflow from apps.wf.models import CustomField, State, Ticket, TicketFlow, Transition, Workflow
@ -411,9 +413,25 @@ class WfService(object):
last_log.intervene_type == Transition.TRANSITION_INTERVENE_TYPE_DELIVER or last_log.intervene_type == Transition.TRANSITION_INTERVENE_TYPE_DELIVER or
ticket.in_add_node): ticket.in_add_node):
# 如果状态变化或是转交加签的情况再发送通知 # 如果状态变化或是转交加签的情况再发送通知
from apps.wf.tasks import send_ticket_notice Thread(target=send_ticket_notice_t, args=(ticket,), daemon=True).start()
send_ticket_notice.delay(ticket_id=ticket.id)
# 如果目标状态是脚本则异步执行 # 如果目标状态是脚本则异步执行
if state.participant_type == State.PARTICIPANT_TYPE_ROBOT: if state.participant_type == State.PARTICIPANT_TYPE_ROBOT:
run_task.delay(ticket_id=ticket.id) run_task.delay(ticket_id=ticket.id)
def send_ticket_notice_t(ticket: Ticket):
"""
发送通知
"""
params = {'workflow': ticket.workflow.name, 'state': ticket.state.name}
if ticket.participant_type == 1:
# 发送短信通知
pt = User.objects.filter(id=ticket.participant).first()
if pt and pt.phone:
send_sms(pt.phone, 1002, params)
elif ticket.participant_type == 2:
pts = User.objects.filter(id__in=ticket.participant)
for i in pts:
if i.phone:
send_sms(i.phone, 1002, params)