Поддерживает ли несколько клиентов актуальную информацию в Python?

1

Я новичок в сетевом программировании, но старый для Python. У меня есть простая программа для промокания, которая будет использоваться на нескольких клиентских компьютерах. Блокнот работает двумя способами: он может отображать и обновлять информацию в базе данных. Чтобы избежать блокировки, показывающей старые данные, как я могу заставить все блокирующие данные повторно извлекать информацию из базы данных, как только один промоактор обновил некоторые данные в базе данных?

Я бы предпочел избежать сложностей при настройке некоторых клиент-серверных протоколов. Возможно ли создать какую-либо форму клиентского протокола, когда простое сообщение обновления передается прямо на других блоттеров, когда им необходимо обновить их информацию?

  • 0
    Какова текущая логика его Python-скрипт?
  • 0
    На самом деле не понимаю этот вопрос.
Показать ещё 2 комментария
Теги:
network-programming

2 ответа

0
Лучший ответ

Чтобы получать сообщения (например, пакет UDP, предлагаемый другим плакатом или HTTP-запрос), клиентам необходимо будет запустить базовый сервер на клиентской машине. Например, вы можете использовать модуль Python xmlrpc. Однако локальный межсетевой экран может блокировать внутреннюю связь.

Самое простое решение, если количество клиентов умеренное, - это часто опросить базу данных для изменений: добавьте столбец "время последней модификации" в таблицу чертежей и попросите клиентов проверить это поле. Таким образом, клиенты могут выяснить, нужно ли перезагружать чертеж, не тратя слишком много ресурсов.

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

  • 0
    Один вопрос, могу ли я запустить сервер сокетов (я полагаю, это то, что вы имеете в виду) на каждом клиенте (компьютере)? Нужно ли мне иметь один сокет-сервер, а затем много возможных сокет-клиентов?
  • 0
    Серверы прослушивают сокет для входящих соединений, клиенты делают эти соединения. Конечно, вы можете реализовать один сервер на Python и подключаться к нему от каждого клиента несколько раз, чтобы увидеть, есть ли сообщение от другого клиента, но вы можете сделать то же самое с базой данных. Чтобы избежать частых подключений, вам нужна другая архитектура: экземпляры приложения для рисования прослушивают входящие подключения и обновляют свой чертеж, если они получают сообщение об этом. При запуске они должны подписаться на новостную ленту, например, добавив свой адрес в таблицу базы данных.
Показать ещё 5 комментариев
0

Вы можете использовать триггеры. Когда информация обновляется, отправляйте сигнал (зависит от вас, как, а может быть, только пакет udp), всем блоттерам, которые будут последовательно обновлять свою информацию. Postgresql может быть сценарием с использованием python.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню