feat: 未处理的event可持续ws推送

This commit is contained in:
caoqianming 2023-09-06 09:23:42 +08:00
parent 5835e2f6a0
commit aed110afe9
3 changed files with 34 additions and 10 deletions

View File

@ -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='未处理事件的推送间隔(秒)'),
),
]

View File

@ -40,6 +40,7 @@ class EventCate(CommonAModel):
same_allow_minute = models.PositiveSmallIntegerField('允许时间', default=0, help_text='同一对象同事件多长时间内不再触发, 0代表一直触发')
opl_cates = models.ManyToManyField(OplCate, verbose_name='关联许可证', blank=True)
is_auto_escalate = models.BooleanField('是否自动升级', default=False)
unhandled_push_interval = models.PositiveIntegerField('未处理事件的推送间隔(秒)', default=3600)
def __str__(self):
return self.name

View File

@ -202,13 +202,18 @@ def remind_push(remindId: str):
@shared_task(base=CustomTask)
def event_push(eventId: str):
event = Event.objects.get(id=eventId)
channel_layer = get_channel_layer()
data = {
'type': 'event',
'event': EventSerializer(instance=event).data,
'msg': ''
}
async_to_sync(channel_layer.group_send)('event', data)
event.last_ws_pushtime = timezone.now()
event.save()
if event.handle_time is None:
now = timezone.now()
event = Event.objects.get(id=eventId)
channel_layer = get_channel_layer()
data = {
'type': 'event',
'event': EventSerializer(instance=event).data,
'msg': ''
}
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))