mirror of https://github.com/jumpserver/jumpserver
36 lines
878 B
Python
36 lines
878 B
Python
from django.db.models.signals import post_save
|
|
from django.dispatch import receiver
|
|
from django.utils.functional import LazyObject
|
|
|
|
from common.decorator import on_transaction_commit
|
|
from common.utils import get_logger
|
|
from common.utils.connection import RedisPubSub
|
|
from ..models import Task
|
|
from ..utils import DBPortManager
|
|
|
|
db_port_manager: DBPortManager
|
|
|
|
logger = get_logger(__file__)
|
|
|
|
|
|
class ComponentEventChan(LazyObject):
|
|
def _setup(self):
|
|
self._wrapped = RedisPubSub('fm.component_event_chan')
|
|
|
|
|
|
component_event_chan = ComponentEventChan()
|
|
|
|
|
|
@receiver(post_save, sender=Task)
|
|
@on_transaction_commit
|
|
def on_task_created(sender, instance: Task, created, **kwargs):
|
|
if not created:
|
|
return
|
|
event = {
|
|
"type": instance.name,
|
|
"payload": {
|
|
"id": str(instance.id),
|
|
},
|
|
}
|
|
component_event_chan.publish(event)
|