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):
|
for i in Event.objects.filter(handle_user=None, is_timeout=False):
|
||||||
cate = i.cates.all().order_by('priority', 'create_time').first()
|
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.is_timeout = True
|
||||||
i.save()
|
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))
|
algo_codes = list(EventCate.objects.filter(opl_cates=opl_cate).values_list('code', flat=True))
|
||||||
vchannels = TDevice.objects.filter(code__in=vc_codes)
|
vchannels = TDevice.objects.filter(code__in=vc_codes)
|
||||||
opl = Opl.objects.get(id=opl_id)
|
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:
|
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_uid = None
|
||||||
|
opl.save()
|
||||||
|
|
|
@ -1,7 +1,12 @@
|
||||||
from django_filters import rest_framework as filters
|
from django_filters import rest_framework as filters
|
||||||
|
|
||||||
|
from apps.monitor.models import DrfRequestLog
|
||||||
|
|
||||||
|
|
||||||
class DrfLogFilterSet(filters.FilterSet):
|
class DrfLogFilterSet(filters.FilterSet):
|
||||||
start_request = filters.DateTimeFilter(field_name="requested_at", lookup_expr='gte')
|
start_request = filters.DateTimeFilter(field_name="requested_at", lookup_expr='gte')
|
||||||
end_request = filters.DateTimeFilter(field_name="requested_at", lookup_expr='lte')
|
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
|
list_serializer_class = DrfRequestLogSerializer
|
||||||
ordering = ['-requested_at']
|
ordering = ['-requested_at']
|
||||||
filterset_class = DrfLogFilterSet
|
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='关联工单',
|
ticket = models.OneToOneField('wf.ticket', verbose_name='关联工单',
|
||||||
on_delete=models.SET_NULL,
|
on_delete=models.SET_NULL,
|
||||||
null=True, blank=True)
|
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):
|
class OplWorker(BaseModel):
|
||||||
|
|
|
@ -214,7 +214,6 @@ class OplListSerializer(CustomModelSerializer):
|
||||||
charger_ = UserSimpleSerializer(source='charger', read_only=True)
|
charger_ = UserSimpleSerializer(source='charger', read_only=True)
|
||||||
monitor_ = UserSimpleSerializer(source='monitor', read_only=True)
|
monitor_ = UserSimpleSerializer(source='monitor', read_only=True)
|
||||||
ticket_ = TicketSerializer(source='ticket', read_only=True)
|
ticket_ = TicketSerializer(source='ticket', read_only=True)
|
||||||
mtask_status = serializers.CharField(source='mtask.status', read_only=True)
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Opl
|
model = Opl
|
||||||
|
@ -237,7 +236,6 @@ class OplDetailSerializer(CustomModelSerializer):
|
||||||
close_dos_ = serializers.SerializerMethodField()
|
close_dos_ = serializers.SerializerMethodField()
|
||||||
create_imgs_ = FileSerializer(source='create_imgs', many=True)
|
create_imgs_ = FileSerializer(source='create_imgs', many=True)
|
||||||
close_imgs_ = FileSerializer(source='close_imgs', many=True)
|
close_imgs_ = FileSerializer(source='close_imgs', many=True)
|
||||||
mtask_status = serializers.CharField(source='mtask.status', read_only=True)
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Opl
|
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):
|
def t_submit_close_mtask(ticket: Ticket, transition: Transition, new_ticket_data: dict):
|
||||||
# 提交作业关闭时关闭作业监控
|
# 提交作业关闭时关闭作业监控
|
||||||
opl = Opl.objects.filter(ticket=ticket).first()
|
opl = Opl.objects.filter(ticket=ticket).first()
|
||||||
mtask = opl.mtask
|
if opl and opl.mtask_uid:
|
||||||
if opl and mtask:
|
close_mtask(opl.mtask_uid)
|
||||||
close_mtask(mtask.task_id)
|
|
||||||
# 防止没变化,手动处理一下
|
# 防止没变化,手动处理一下
|
||||||
mtask.status = 'REVOKED'
|
|
||||||
mtask.save()
|
|
||||||
|
|
||||||
|
|
||||||
def opl_audit_end(ticket: Ticket):
|
def opl_audit_end(ticket: Ticket):
|
||||||
|
@ -107,18 +104,17 @@ def opl_start(ticket: Ticket):
|
||||||
|
|
||||||
def start_mtask(opl: Opl):
|
def start_mtask(opl: Opl):
|
||||||
op = opl.operation
|
op = opl.operation
|
||||||
mtask_id = None
|
mtask_uid = None
|
||||||
vc_codes = []
|
vc_codes = []
|
||||||
# 找到作业点的摄像头, 如果指定摄像头就用指定的摄像头
|
# 找到作业点的摄像头, 如果指定摄像头就用指定的摄像头
|
||||||
if op.vchannels:
|
if op.vchannels:
|
||||||
vc_codes = list(op.vchannels.all().values_list('code', flat=True))
|
vc_codes = list(op.vchannels.all().values_list('code', flat=True))
|
||||||
opl_id = opl.id
|
opl_id = opl.id
|
||||||
task = opl_task.delay(vc_codes, opl_id)
|
task = opl_task.delay(vc_codes, opl_id)
|
||||||
time.sleep(3)
|
mtask_uid = task.id
|
||||||
mtask_id = task.id
|
opl.mtask_uid = mtask_uid
|
||||||
opl.mtask = TaskResult.objects.get(task_id=mtask_id)
|
|
||||||
opl.save()
|
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):
|
def close_mtask(task_id: str):
|
||||||
|
@ -135,9 +131,9 @@ def opl_end(ticket: Ticket):
|
||||||
作业许可证关闭时执行
|
作业许可证关闭时执行
|
||||||
"""
|
"""
|
||||||
opl = ticket.opl
|
opl = ticket.opl
|
||||||
if opl.mtask:
|
if opl.mtask_uid:
|
||||||
# 关闭作业视频监控任务
|
# 关闭作业视频监控任务
|
||||||
close_mtask(opl.mtask.task_id)
|
close_mtask(opl.mtask_uid)
|
||||||
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() # 删除无用许可证
|
||||||
|
|
|
@ -105,9 +105,9 @@ class OplViewSet(CustomModelViewSet):
|
||||||
开启作业监控
|
开启作业监控
|
||||||
"""
|
"""
|
||||||
obj = self.get_object()
|
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)
|
res = start_mtask(obj)
|
||||||
return Response(res)
|
return Response(res)
|
||||||
|
|
||||||
|
@ -120,12 +120,9 @@ class OplViewSet(CustomModelViewSet):
|
||||||
停止作业监控
|
停止作业监控
|
||||||
"""
|
"""
|
||||||
obj = self.get_object()
|
obj = self.get_object()
|
||||||
mtask = obj.mtask
|
if obj.mtask_uid:
|
||||||
if obj.mtask:
|
close_mtask(obj.mtask_uid)
|
||||||
close_mtask(mtask.task_id)
|
|
||||||
# 防止没变化,手动处理一下
|
# 防止没变化,手动处理一下
|
||||||
mtask.status = 'REVOKED'
|
|
||||||
mtask.save()
|
|
||||||
return Response()
|
return Response()
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue