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.
jumpserver/apps/terminal/signal_handlers/terminal.py

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)