Recuerda que en las ciencias un error suele tener diferentes soluciones, no obstante nosotros aquí te mostraremos lo más óptimo y mejor.
Solución:
los multiprocessing
La biblioteca proporciona oyentes y clientes que envuelven los sockets y le permiten pasar objetos de python arbitrarios.
Su servidor podría escuchar para recibir objetos de python:
from multiprocessing.connection import Listener
address = ('localhost', 6000) # family is deduced to be 'AF_INET'
listener = Listener(address, authkey='secret password')
conn = listener.accept()
print 'connection accepted from', listener.last_accepted
while True:
msg = conn.recv()
# do something with msg
if msg == 'close':
conn.close()
break
listener.close()
Su cliente podría enviar comandos como objetos:
from multiprocessing.connection import Client
address = ('localhost', 6000)
conn = Client(address, authkey='secret password')
conn.send('close')
# can also send arbitrary objects:
# conn.send(['a', 2.5, None, int, sum])
conn.close()
Nah, zeromq es el camino a seguir. Delicioso, ¿no?
import argparse
import zmq
parser = argparse.ArgumentParser(description='zeromq server/client')
parser.add_argument('--bar')
args = parser.parse_args()
if args.bar:
# client
context = zmq.Context()
socket = context.socket(zmq.REQ)
socket.connect('tcp://127.0.0.1:5555')
socket.send(args.bar)
msg = socket.recv()
print msg
else:
# server
context = zmq.Context()
socket = context.socket(zmq.REP)
socket.bind('tcp://127.0.0.1:5555')
while True:
msg = socket.recv()
if msg == 'zeromq':
socket.send('ah ha!')
else:
socket.send('...nah')
De acuerdo con mi experiencia, rpyc
es, con mucho, la forma más sencilla y elegante de hacerlo.
(Sé que esta es una vieja pregunta, pero me acabo de topar con ella…)
Aquí puedes ver las reseñas y valoraciones de los usuarios
Si piensas que ha sido provechoso este artículo, agradeceríamos que lo compartas con más programadores de esta manera nos ayudas a difundir nuestra información.