Использование Django Channels (потребитель уровня websocket) для обновления веб-страницы данными из внутренней базы данных и внешнего источника данных

У меня есть следующий класс django channels, который обновляет значения на веб-странице. Класс получает данные от нажатий на экран, выполняет действия (переключение индикаторных реле или установка их серии для определенного использования, обновление базы данных и затем обновление веб-страницы через уровень websocket. Все это прекрасно работало, пока я не представил nina. Она получает данные из удаленного источника через curl POST (см. ниже). Curl POST приводит к отказу: 'TypeError: nina() missing 1 required positional argument: 'request', но если я уберу 'self', то не понимаю, как я могу вызвать 'update_relays', используя его данные.

curl -X POST awebsite.com/dome_control/nina/ -H "Content-Type: application/json" -d '{"type": "curl.receive", "text": "power on"}'

OK Итак, ответ заключается в "совместном использовании" слоя_канала

@csrf_exempt
def nina(request):
    """RECEIVES DATA FROM NINA"""
    logger.info("request received from nina: %s", request)
    logger.info("data  %s", json.loads(request.body))
    incoming_msg = json.loads(request.body)["text"]
    channel_layer = get_channel_layer()
    async_to_sync(channel_layer.group_send)(
        "dome_control_group",
        {'type': 'websocket.receive', 'text': incoming_msg}
         )
    return JsonResponse({'status': 'ok'})

Также была допущена ошибка в запросе curl (отсутствие / в конце url)

curl -X POST https://mywebsiteaddress/dome_control/nina/ -H "Content-Type: application/json" -d '{"type": "curl.receive", "text": "power on"}'
Вернуться на верх