feat: 未处理的event可持续ws推送
This commit is contained in:
parent
5835e2f6a0
commit
aed110afe9
|
@ -0,0 +1,18 @@
|
||||||
|
# Generated by Django 3.2.12 on 2023-09-06 01:21
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('ecm', '0013_auto_20230905_1729'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='eventcate',
|
||||||
|
name='unhandled_push_interval',
|
||||||
|
field=models.PositiveIntegerField(default=3600, verbose_name='未处理事件的推送间隔(秒)'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -40,6 +40,7 @@ class EventCate(CommonAModel):
|
||||||
same_allow_minute = models.PositiveSmallIntegerField('允许时间', default=0, help_text='同一对象同事件多长时间内不再触发, 0代表一直触发')
|
same_allow_minute = models.PositiveSmallIntegerField('允许时间', default=0, help_text='同一对象同事件多长时间内不再触发, 0代表一直触发')
|
||||||
opl_cates = models.ManyToManyField(OplCate, verbose_name='关联许可证', blank=True)
|
opl_cates = models.ManyToManyField(OplCate, verbose_name='关联许可证', blank=True)
|
||||||
is_auto_escalate = models.BooleanField('是否自动升级', default=False)
|
is_auto_escalate = models.BooleanField('是否自动升级', default=False)
|
||||||
|
unhandled_push_interval = models.PositiveIntegerField('未处理事件的推送间隔(秒)', default=3600)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
|
@ -202,13 +202,18 @@ def remind_push(remindId: str):
|
||||||
|
|
||||||
@shared_task(base=CustomTask)
|
@shared_task(base=CustomTask)
|
||||||
def event_push(eventId: str):
|
def event_push(eventId: str):
|
||||||
event = Event.objects.get(id=eventId)
|
if event.handle_time is None:
|
||||||
channel_layer = get_channel_layer()
|
now = timezone.now()
|
||||||
data = {
|
event = Event.objects.get(id=eventId)
|
||||||
'type': 'event',
|
channel_layer = get_channel_layer()
|
||||||
'event': EventSerializer(instance=event).data,
|
data = {
|
||||||
'msg': ''
|
'type': 'event',
|
||||||
}
|
'event': EventSerializer(instance=event).data,
|
||||||
async_to_sync(channel_layer.group_send)('event', data)
|
'msg': ''
|
||||||
event.last_ws_pushtime = timezone.now()
|
}
|
||||||
event.save()
|
async_to_sync(channel_layer.group_send)('event', data)
|
||||||
|
event.last_ws_pushtime = timezone.now()
|
||||||
|
event.save()
|
||||||
|
main_cate = event.cates.all().order_by('priority', 'create_time').first()
|
||||||
|
unhandled_push_interval = main_cate.unhandled_push_interval
|
||||||
|
event_push.apply_async(eta=now + timedelta(seconds=unhandled_push_interval))
|
Loading…
Reference in New Issue