У меня есть сервер-клиентское приложение, использующее 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 и не завершать клиентский запрос, пока не будет выполнено условие?