opl mtask_uid
This commit is contained in:
parent
b129355aec
commit
831167f1f9
|
@ -70,7 +70,7 @@ def check_event_timeout():
|
|||
"""
|
||||
for i in Event.objects.filter(handle_user=None, is_timeout=False):
|
||||
cate = i.cates.all().order_by('priority', 'create_time').first()
|
||||
if cate.handle_minute > 0 and (timezone.now()-i.create_time).seconds > cate.handle_minute * 60:
|
||||
if cate and cate.handle_minute > 0 and (timezone.now()-i.create_time).seconds > cate.handle_minute * 60:
|
||||
i.is_timeout = True
|
||||
i.save()
|
||||
|
||||
|
@ -85,7 +85,9 @@ def opl_task(vc_codes: list, opl_id: str):
|
|||
algo_codes = list(EventCate.objects.filter(opl_cates=opl_cate).values_list('code', flat=True))
|
||||
vchannels = TDevice.objects.filter(code__in=vc_codes)
|
||||
opl = Opl.objects.get(id=opl_id)
|
||||
while time.time()-start_time < 14400 and algo_codes: # 一次任务不手动关闭最多持续4小时
|
||||
while time.time()-start_time < 14400: # 一次任务不手动关闭最多持续4小时
|
||||
for i in vchannels:
|
||||
Thread(target=snap_and_analyse, args=(i, algo_codes, opl)).start()
|
||||
time.sleep(10)
|
||||
opl.mtask_uid = None
|
||||
opl.save()
|
||||
|
|
|
@ -1,7 +1,12 @@
|
|||
from django_filters import rest_framework as filters
|
||||
|
||||
from apps.monitor.models import DrfRequestLog
|
||||
|
||||
|
||||
class DrfLogFilterSet(filters.FilterSet):
|
||||
start_request = filters.DateTimeFilter(field_name="requested_at", lookup_expr='gte')
|
||||
end_request = filters.DateTimeFilter(field_name="requested_at", lookup_expr='lte')
|
||||
id = filters.CharFilter()
|
||||
|
||||
class Meta:
|
||||
model = DrfRequestLog
|
||||
fields = ['id', 'start_request', 'end_request', 'status_code']
|
||||
|
|
|
@ -143,3 +143,4 @@ class DrfRequestLogViewSet(ListModelMixin, CustomGenericViewSet):
|
|||
list_serializer_class = DrfRequestLogSerializer
|
||||
ordering = ['-requested_at']
|
||||
filterset_class = DrfLogFilterSet
|
||||
search_fields = ['path', 'view']
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
# Generated by Django 3.2.12 on 2022-10-15 15:53
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('opm', '0006_opl_work_scope'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='opl',
|
||||
name='mtask',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='opl',
|
||||
name='mtask_uid',
|
||||
field=models.CharField(blank=True, max_length=100, null=True, verbose_name='监控任务ID'),
|
||||
),
|
||||
]
|
|
@ -118,7 +118,7 @@ class Opl(CommonBDModel):
|
|||
ticket = models.OneToOneField('wf.ticket', verbose_name='关联工单',
|
||||
on_delete=models.SET_NULL,
|
||||
null=True, blank=True)
|
||||
mtask = models.ForeignKey('django_celery_results.taskresult', on_delete=models.SET_NULL, null=True, blank=True)
|
||||
mtask_uid = models.CharField('监控任务ID', max_length=100, null=True, blank=True)
|
||||
|
||||
|
||||
class OplWorker(BaseModel):
|
||||
|
|
|
@ -214,7 +214,6 @@ class OplListSerializer(CustomModelSerializer):
|
|||
charger_ = UserSimpleSerializer(source='charger', read_only=True)
|
||||
monitor_ = UserSimpleSerializer(source='monitor', read_only=True)
|
||||
ticket_ = TicketSerializer(source='ticket', read_only=True)
|
||||
mtask_status = serializers.CharField(source='mtask.status', read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = Opl
|
||||
|
@ -237,7 +236,6 @@ class OplDetailSerializer(CustomModelSerializer):
|
|||
close_dos_ = serializers.SerializerMethodField()
|
||||
create_imgs_ = FileSerializer(source='create_imgs', many=True)
|
||||
close_imgs_ = FileSerializer(source='close_imgs', many=True)
|
||||
mtask_status = serializers.CharField(source='mtask.status', read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = Opl
|
||||
|
|
|
@ -64,12 +64,9 @@ def bind_opl(ticket: Ticket, transition: Transition, new_ticket_data: dict):
|
|||
def t_submit_close_mtask(ticket: Ticket, transition: Transition, new_ticket_data: dict):
|
||||
# 提交作业关闭时关闭作业监控
|
||||
opl = Opl.objects.filter(ticket=ticket).first()
|
||||
mtask = opl.mtask
|
||||
if opl and mtask:
|
||||
close_mtask(mtask.task_id)
|
||||
if opl and opl.mtask_uid:
|
||||
close_mtask(opl.mtask_uid)
|
||||
# 防止没变化,手动处理一下
|
||||
mtask.status = 'REVOKED'
|
||||
mtask.save()
|
||||
|
||||
|
||||
def opl_audit_end(ticket: Ticket):
|
||||
|
@ -107,18 +104,17 @@ def opl_start(ticket: Ticket):
|
|||
|
||||
def start_mtask(opl: Opl):
|
||||
op = opl.operation
|
||||
mtask_id = None
|
||||
mtask_uid = None
|
||||
vc_codes = []
|
||||
# 找到作业点的摄像头, 如果指定摄像头就用指定的摄像头
|
||||
if op.vchannels:
|
||||
vc_codes = list(op.vchannels.all().values_list('code', flat=True))
|
||||
opl_id = opl.id
|
||||
task = opl_task.delay(vc_codes, opl_id)
|
||||
time.sleep(3)
|
||||
mtask_id = task.id
|
||||
opl.mtask = TaskResult.objects.get(task_id=mtask_id)
|
||||
mtask_uid = task.id
|
||||
opl.mtask_uid = mtask_uid
|
||||
opl.save()
|
||||
return dict(vc_codes=vc_codes, mtask_id=mtask_id)
|
||||
return dict(vc_codes=vc_codes, mtask_uid=mtask_uid)
|
||||
|
||||
|
||||
def close_mtask(task_id: str):
|
||||
|
@ -135,9 +131,9 @@ def opl_end(ticket: Ticket):
|
|||
作业许可证关闭时执行
|
||||
"""
|
||||
opl = ticket.opl
|
||||
if opl.mtask:
|
||||
if opl.mtask_uid:
|
||||
# 关闭作业视频监控任务
|
||||
close_mtask(opl.mtask.task_id)
|
||||
close_mtask(opl.mtask_uid)
|
||||
operation = opl.operation
|
||||
opls = Opl.objects.filter(operation=operation)
|
||||
opls.filter(ticket=None).delete() # 删除无用许可证
|
||||
|
|
|
@ -105,9 +105,9 @@ class OplViewSet(CustomModelViewSet):
|
|||
开启作业监控
|
||||
"""
|
||||
obj = self.get_object()
|
||||
if obj.mtask:
|
||||
if obj.mtask_uid:
|
||||
# 先关闭
|
||||
close_mtask(obj.mtask.task_id)
|
||||
close_mtask(obj.mtask_uid)
|
||||
res = start_mtask(obj)
|
||||
return Response(res)
|
||||
|
||||
|
@ -120,12 +120,9 @@ class OplViewSet(CustomModelViewSet):
|
|||
停止作业监控
|
||||
"""
|
||||
obj = self.get_object()
|
||||
mtask = obj.mtask
|
||||
if obj.mtask:
|
||||
close_mtask(mtask.task_id)
|
||||
if obj.mtask_uid:
|
||||
close_mtask(obj.mtask_uid)
|
||||
# 防止没变化,手动处理一下
|
||||
mtask.status = 'REVOKED'
|
||||
mtask.save()
|
||||
return Response()
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue