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代表一直触发')
|
||||
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
|
||||
|
|
|
@ -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))
|
Loading…
Reference in New Issue