Рассмотрим следующий сценарий:
01) PHP-сервер с PostgreSQL aka PHP
02) Python с каналами Django 2 с Redis aka PYTHON
03) Мобильные клиенты Websocket aka Клиент
PYTHON имеет несколько сохраненных (в памяти) соединений клиенты через веб-сокеты.
PHP открывает соединение через веб-сокет с PYTHON и спрашивает: дайте мне список ближайших клиентов . PYTHON сохранить (в памяти) это соединение с PHP
PYTHON организовать этих клиентов в очереди и хранить в REDIS .После очереди готовности PYTHON предлагает это задание (данные из PHP ) первому клиенту очереди.
Если клиент ответ yes
, PYTHON получает ответ, затем уведомляет PHP и процесс завершен.Если client ответит «нет», PYTHON получит следующего клиента в очереди. Вот моя проблема : если клиент не отвечает?или отключить?Мне нужно время ожидания и найти способ перейти к следующему пункту в очереди.Это вопрос?Как открыть очередь с недоступным клиентом и предложить работу следующему элементу?
Я установил внешний Python для прослушивания __keyspace@0__
и __keyevents@0__
(истекает) с кодом while True:
... но это довольно запутанно.Я также думал с channel_layer и groups ... но управление циклом (потоком) не должно быть заблокировано для клиентов, должно быть заблокировано только для PYTHON .
Какой лучший подход?Джанго Каналы рабочий?независимый паб / суб-клиент?Установить паб / саб в работнике?третий сервис?Список событий с истекшим сроком действия в channel_layer?Я здесь совершенно слепой