Nano Hash - криптовалюты, майнинг, программирование

Клиент-сервер Python - сообщите, если клиент в автономном режиме

Моя основная проблема заключается в том, что я ищу способ подключения нескольких клиентов к серверу через Интернет, и чтобы сервер мог определить, находятся ли эти клиенты в сети или в автономном режиме.

Мой текущий способ сделать это - сервер сокетов python и клиенты python, которые отправляют серверу небольшое сообщение каждые 2 секунды. Сервер проверяет каждого клиента, чтобы узнать, получил ли он такое сообщение за последние 5 секунд, и если нет, то клиент помечается как офлайн.

Однако я чувствую, что это, вероятно, не лучший способ сделать это, и даже если это так, может быть библиотека, которая сделает это за меня. Я искал такую ​​библиотеку, но пришел с пустыми руками.

Кто-нибудь знает лучший способ сделать это или библиотеку, которая может автоматически проверять состояние нескольких подключенных клиентов?

Примечание: под "автономным" я подразумеваю, что клиент может быть выключен, сетевое соединение отключено или программа закрыта.


Ответы:


1

Предполагая, что вы не выполняете ping с сервера на клиент. Я считаю, что ваш подход в порядке. Очень часто другой сервер не сможет связаться с клиентом, но это работает наоборот. У вас могут закончиться ресурсы, если у вас много подключенных клиентов.

Кроме того, по этому установленному каналу вы можете отправлять другие данные/показатели, и так родился мониторинг стрелы ;-) ЕСЛИ вы отправляете другие данные, вы, вероятно, будете уверены, что вам не нужно отправлять данные каждые 2 секунды, но только если никакие другие данные не были отправлены - стрела FIX работает таким образом (и многие другие протоколы обмена сообщениями)

Что вам может понравиться, так это что-то вроде kafka, которое будет передавать сообщения для вас, есть и другие протоколы обмена сообщениями ... и они масштабируются лучше, чем если вы просто подключите всех клиентов (при условии, что у вас их много)

Счастливый обмен сообщениями

23.10.2015

2

Доброе утро, я работаю над одним и тем же проектом и хочу опубликовать свой подход. Когда клиент подключается к моему серверу с client, address = sock.accept(), мы можем взять его ip с ip_client = address[0]. Предполагая, что у вас есть список с подключенными ips, вы можете добавить ip с connected_clients.append(ip_client), наконец, у вас есть список с подключенными ips, создайте поток или внутри бесконечного цикла напишите следующий код

for connected in connected_clients:
    response = os.system("ping -c 1 " + connected)
    if response == True:
        continue
    else:
        connected_clients.remove(connected)

не забудьте команду input os в начале, и вы маните подключенных клиентов

03.11.2017
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..