Держите tcp-соединение открытым, используя xmlrpc.server из python3.4 - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть сервер-клиентское приложение, использующее xmlrpc.server и xmlrpc.client, где клиенты запрашивают данные с сервера.Поскольку сервер возвращает эти данные только после выполнения определенных условий, клиенты совершают один и тот же вызов снова и снова, и в настоящее время соединение tcp повторно инициируется при каждом вызове.Это создает заметную задержку.

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

Я пытался найти в Googleоставляя соединение TCP открытым, но все, что я мог найти, говорило либо о xmlrpclib, либо неприменимо к версии python.

Код на стороне клиента:

import xmlrpc.client as xc
server =  xc.ServerProxy(host_IP,8000)

var = False
while type(var)==bool:
    var = server.pull_update() 
    # this returns "False" while the server determines the conditions 
    # for the client to receive the update aren't met; and the update 
    # once the conditions are met

Я на стороне сервера, ярасширение xmlrpc.server.SimpleXMLRPCServer стандартным xmlrpc.server.SimpleXMLRPCRequestHandler.Рассматриваемая функция:

def export_pull_update(self):
    if condition:
        return self.var
    else:
        return False

Есть ли способ получить xmlrpc.server для поддержания связи между вызовами на сервер?Или я должен пойти по пути использования ThreadingMixIn и не завершать клиентский запрос, пока не будет выполнено условие?

...