From 1283d4f92edc3c327413699411308046fcddf8ac Mon Sep 17 00:00:00 2001
From: wactbprot <wactbprot@gmail.com>
Date: Tue, 11 Sep 2018 14:26:28 +0200
Subject: [PATCH] loop, single works

---
 anselm.py        | 20 +++++++++++++++-----
 anselm/system.py |  3 +--
 anselm/worker.py | 47 +++++++++++++++++++++++++++++------------------
 3 files changed, 45 insertions(+), 25 deletions(-)

diff --git a/anselm.py b/anselm.py
index ced5118..c0b56be 100644
--- a/anselm.py
+++ b/anselm.py
@@ -63,12 +63,13 @@ class Anselm(System):
         self.result_col= 1
 
         self.line_heigth = 28
-        
+        self.long_line = 350
         self.win = QWidget()
+        self.win.closeEvent = self.closeEvent
         self.grid = QGridLayout(self.win)
 
         add_device_bttn = QPushButton("add device", self.win)
-        add_device_bttn.setFixedSize(450, self.line_heigth)
+        add_device_bttn.setFixedSize(self.long_line, self.line_heigth)
         add_device_bttn.clicked.connect(self.add_device_line)
         self.add_widget_to_grid(add_device_bttn ,self.current_grid_line, self.add_device_btn_col)
       
@@ -82,7 +83,8 @@ class Anselm(System):
         year_select_combo.currentIndexChanged.connect(lambda: self.year_selected(year_select_combo))
 
         self.draw_grid()  
-
+   
+   
     def add_widget_to_grid(self, widget, line, col):
 
         #old_widget_item = self.grid.itemAtPosition (line, col)
@@ -135,7 +137,7 @@ class Anselm(System):
             l = widget_item.widget()
         else:
             l = QPlainTextEdit(self.win)
-            l.setFixedSize(450, self.line_heigth*2)
+            l.setFixedSize(self.long_line, self.line_heigth*3)
  
         result = self.aget('result', line)
         if result:
@@ -246,7 +248,15 @@ class Anselm(System):
         self.aset('year', 0, year)
         self.log.info("select year {}".format( year ))
 
+    def closeEvent(self, event):
+        self.log.info("flush redis database")
+        self.r.flushdb()
+        if True:
+            event.accept()
+        else:
+            event.ignore()
+
 if __name__ == '__main__':
     app = QApplication(sys.argv)
-    ex = Anselm()
+    Anselm()
     sys.exit(app.exec_())
diff --git a/anselm/system.py b/anselm/system.py
index c352241..4fb8dc8 100644
--- a/anselm/system.py
+++ b/anselm/system.py
@@ -8,8 +8,7 @@ import redis
 class System:
     """
     """
-    max_arg_len = 40
-    expire_time = 5000 #ms
+    expire_time = 10000 #ms
     log_fmt = '%(asctime)s,%(msecs)03d %(hostname)s %(filename)s:%(lineno)s %(levelname)s %(message)s'
     log_level = "DEBUG"
    
diff --git a/anselm/worker.py b/anselm/worker.py
index 87b3668..5201fe0 100644
--- a/anselm/worker.py
+++ b/anselm/worker.py
@@ -16,7 +16,7 @@ class Worker(System):
         
 
     def run(self):
-        """The memeber workomline is set ba anselm
+        """The member workonline is set ba anselm
         before the thread is start.
         """
         if self.work_on_line:
@@ -26,36 +26,44 @@ class Worker(System):
             acc = task['Action']
 
             if acc == "TCP":
-                 start_new_thread( self.relay_worker, (task, line))
+                worker =  self.relay_worker   
             if acc == "VXI11":
-                 start_new_thread( self.relay_worker, (task, line))
+                worker =  self.relay_worker   
             if acc == "wait":
-                start_new_thread( self.wait_worker, (task, line))
+                worker =  self.wait_worker                   
+
         
+            start_new_thread( worker, (task, line))
             self.work_on_line = None
         else:
-            self.log.error("member work_on_line not set")
+            self.log.error("member var: work_on_line not set")
 
     def relay_worker(self, task, line):
-        req = requests.post(self.relay_url, data=json.dumps(task), headers = self.headers)
-        res = req.json()
+        repeat = True
+        while repeat:
+            req = requests.post(self.relay_url, data=json.dumps(task), headers = self.headers)
+            res = req.json()
 
-        if 'Result' in res:
-            self.aset('result', line,  res['Result'], expire=True)
-          
-        if 'ToExchange' in res:
-            self.aset('exchange', line, res['ToExchange'], expire=True)
+            if 'Result' in res:
+                self.aset('result', line,  res['Result'], expire=False)
 
-        self.r.publish('io', line)
-        time.sleep(self.expire_time /1000 * (1+0.1))
-        self.r.publish('io', line)
+            if 'ToExchange' in res:
+                self.aset('exchange', line, res['ToExchange'], expire=False)
+
+            self.log.debug("values written")
+            self.r.publish('io', line)
+
+            run_kind = self.aget('run_kind', line)
+            self.log.debug("run_kind is {}".format(run_kind))
+            if run_kind == 'loop':
+                repeat = True
+            else:
+                repeat = False
+                break
 
     def wait_worker(self, task, line):
         time.sleep(5)
         self.aset('result', line,  [{'completed':True}], expire=True)
-
-        self.r.publish('io', line)
-        time.sleep(self.expire_time / 1000 * (1+0.1))
         self.r.publish('io', line)
 
 
@@ -63,3 +71,6 @@ class Worker(System):
 
 
 
+
+
+
-- 
GitLab