summaryrefslogtreecommitdiff
path: root/python/rpc.py
diff options
context:
space:
mode:
authorJules Laplace <julescarbon@gmail.com>2018-05-20 11:30:48 +0200
committerJules Laplace <julescarbon@gmail.com>2018-05-20 11:30:48 +0200
commit2f922b3ac504a5450132447630c6100c7424e16e (patch)
treeb92f32687636984f5e724004a3177ec479c0ac56 /python/rpc.py
bidirectional python zerorpc client
Diffstat (limited to 'python/rpc.py')
-rw-r--r--python/rpc.py57
1 files changed, 57 insertions, 0 deletions
diff --git a/python/rpc.py b/python/rpc.py
new file mode 100644
index 0000000..e71eb04
--- /dev/null
+++ b/python/rpc.py
@@ -0,0 +1,57 @@
+from dotenv import load_dotenv, find_dotenv
+import os
+import zerorpc
+import gevent
+import time
+
+load_dotenv(find_dotenv())
+
+class CortexRPC(object):
+ def __init__(self, fn):
+ super().__init__()
+ self._listener = fn
+ self.connect()
+
+ def connect(self):
+ print("Connecting to RPC on port {}".format(os.getenv('RPC_PORT')))
+ self.rpc = zerorpc.Server(self)
+ self.rpc.bind("tcp://127.0.0.1:" + os.getenv('RPC_PORT'))
+ gevent.spawn(self.started)
+ self.rpc.run()
+
+ def started(self):
+ print("RPC running on port {}".format(os.getenv('RPC_PORT')))
+ self.reconnect()
+ print("defer sending a file...")
+ gevent.sleep(2)
+ self.send_file("test.png")
+
+ def reconnect(self):
+ print("Connecting to Relay on port {}".format(os.getenv('RELAY_PORT')))
+ self.relay = zerorpc.Client()
+ self.relay.connect("tcp://127.0.0.1:" + os.getenv('RELAY_PORT'))
+ val = None
+ try:
+ val = self.relay.connected("rpc")
+ print("rpc connected... {}".format(val))
+ except zerorpc.TimeoutExpired:
+ print("timeout")
+ return val
+
+ def send_param(self, key, value):
+ print("aloha. {}: {}".format(key, value))
+ if self._listener is not None:
+ self._listener(key, value)
+
+ def send_file(self, file):
+ print("sending a file...")
+ file = '01234567' * 8 * 8 * 8 * 8 * 2
+ self.relay.send_file(file)
+ pass
+
+if __name__ == '__main__':
+ def log_param(key, value):
+ print("log param. {}: {}".format(key, value))
+
+ # this will block
+ rpc = CortexRPC(log_param)