Django Channels не работает внутри обработчика заданий или крючков DjangoQ

Я пытаюсь вызвать сообщение по вебсокету, когда задание DjangoQ завершается, но это не работает. Тот же код работает внутри views.py APIView, который ставит задание в очередь, но не работает внутри моего jobs.py обработчика. Он не генерирует ошибку. Он ничего не делает.

views.py # работает (вызывает обработчик потребителя, событие websocket эмитируется и регистрируется в консоли браузера)

from channels.layers import get_channel_layer
from asgiref.sync import async_to_sync
def event_trigger():
    channel_layer = get_channel_layer()
    async_to_sync(channel_layer.group_send)(
        'event_sync',
        {
            'type': 'send_message_to_frontend',
            'message': "event_trigered_from_views"
        }
    )

Тот же код, вызванный из hooks.py, не работает. Ничего не делает.

hooks.py

from channels.layers import get_channel_layer
from asgiref.sync import async_to_sync

def event_trigger():
    channel_layer = get_channel_layer()
    async_to_sync(channel_layer.group_send)(
        'event_sync',
        {
            'type': 'send_message_to_frontend',
            'message': "event_trigered_from_hooks"
        }
    )


def import_wallet_completed(task):
    ic(task.result)
    event_trigger()
    Invite.objects.update_or_create(
        emoji_key=task.result['emoji_key'],
        defaults={
            'job_status': 'wallet_imported'

        }
    )

Что может происходить?

Вернуться на верх