mirror of https://github.com/jumpserver/jumpserver
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
879 B
36 lines
879 B
from django.db.models.signals import post_save
|
|
from django.dispatch import receiver
|
|
from django.utils.functional import LazyObject
|
|
|
|
from common.decorators 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)
|