From ec673dd8b594a808cb9d9a14937b3dcd4a365dc5 Mon Sep 17 00:00:00 2001
From: Samo Penic <samo.penic@gmail.com>
Date: Sat, 05 May 2018 20:08:23 +0000
Subject: [PATCH] Added pinging client, reconnection works.
---
playground/tsclient.py | 39 ++++++++++++++++++++++++++++++++++-----
1 files changed, 34 insertions(+), 5 deletions(-)
diff --git a/playground/tsclient.py b/playground/tsclient.py
index b0d422d..83e3938 100755
--- a/playground/tsclient.py
+++ b/playground/tsclient.py
@@ -39,7 +39,10 @@
return (rid,tape,vtu,status)
else:
print(response.text)
- raise ValueError
+ if(response.status_code==400):
+ raise ValueError
+ else:
+ raise NameError
def ping_run(addr,cid, rid):
@@ -49,6 +52,16 @@
return
else:
raise ValueError
+
+def client_ping(addr,cid):
+ client_data={'client_id':cid}
+ response=requests.post(addr+"/api/pingclient/", data=client_data)
+ if(response.status_code==200):
+ return
+ else:
+ raise ValueError
+
+
def send_error_report(addr,cid, rid,errcode):
client_data={'client_id':cid, 'run_id':rid, 'error_code':errcode}
@@ -97,8 +110,8 @@
self.id=subid
self.ip=get_ip()
self.hostname=get_hostname()
- self.update_seconds=update_second
-# self.subthreads=[]
+ self.update_seconds=update_seconds
+
def stop(self):
self._stop_event.set()
@@ -131,12 +144,28 @@
self.sleep(10)
continue
#print("Got CID. getting RID.")
+ client_ping_time_elapsed=0
while(not self.isStopped()):
try:
(rid,tape,vtu,status)=get_run(self.conn_address,cid)
- except:
+ except NameError:
print("[{}] Could not get RID.".format(self.id))
- self.sleep(10)
+ self.sleep(10)
+ client_ping_time_elapsed+=10
+ if(client_ping_time_elapsed>=250):
+ try:
+ client_ping(self.conn_address,cid)
+ except:
+ break
+ client_ping_time_elapsed=0
+ #if you put break instead of continue, there is no need to ping client. And it is more robust...
+ continue
+ except ValueError:
+ print("[{}] Wrong CID? Getting new CID.".format(self.id))
+ #self.sleep(10)
+ break
+ except:
+ print("[{}] Cannot connect. Server down? Retrying....".format(self.id))
break
else:
#start separate thread with simulations.
--
Gitblit v1.8.0