Skip to content
Snippets Groups Projects
Commit 875a208e authored by wactbprot's avatar wactbprot
Browse files

redis

parent e141e54c
Branches
No related tags found
No related merge requests found
......@@ -6,6 +6,7 @@ anselm
requirements
============
* couchdb (long-term memory, ltm)
* couchdb
* redis
* PyQt5
......@@ -176,15 +176,8 @@ class Anselm(System):
self.log.error("no task selected at line {}".format(line))
if task:
self.log.debug("task is: {}".format(task))
Thread(target=self.worker.run, args=(task, line, self.result_callback)).start()
def result_callback(self, line, results):
self.log.info('result: {} at line {}'.format(results, line))
text = ""
for _, result in enumerate(results):
text = "{} {} {}".format(text,result.get('Value'), result.get('Unit'))
print(text)
Thread(target=self.worker.run, args=(task, line,)).start()
def std_selected(self, combo):
self.state['standard'] = combo.currentText()
self.log.info("select standard {}".format( self.state.get('standard')))
......
......@@ -6,7 +6,11 @@
"view": {
"auxobj": "share/AuxObject"
}
},
},"redis":{
"host": "localhost",
"port": 6379,
"db":0
},
"relay":{
"host": "localhost",
"port": 55555
......
......@@ -3,6 +3,7 @@ import coloredlogs
import logging
import datetime
import time
import redis
......@@ -21,7 +22,8 @@ class System:
# open and parse config file
with open('anselm/config.json') as json_config_file:
self.config = json.load(json_config_file)
self.init_log()
self.init_log()
self.init_kv()
def init_log(self):
log_level = self.config.get('loglevel')
......@@ -31,6 +33,29 @@ class System:
log_level = self.log_level
coloredlogs.install(fmt=self.log_fmt, level=log_level, logger=self.log)
def init_kv(self):
db_dict = self.config.get('redis')
port = db_dict.get('port')
host = db_dict.get('host')
db = db_dict.get('db')
self.r = redis.StrictRedis(host=host, port=port, db=db)
self.log.info("key value store ok")
def aset(self, key_prefix, line, value):
k = '{}@{}'.format(key_prefix, line)
if isinstance(value, dict) or isinstance(value, list):
v = json.dumps(value)
self.r.set(k,v)
def aget(self, key_prefix, line):
k = '{}@{}'.format(key_prefix, line)
v = self.r.get(k)
return json.loads(v)
def now(self):
return datetime.datetime.now().isoformat().replace('T', ' ')
......@@ -14,23 +14,23 @@ class Worker(System):
self.headers = {'content-type': 'application/json'}
def run(self, task, line, callback=None):
def run(self, task, line):
acc = task['Action']
if acc == "TCP":
self.relay_worker(task, line, callback)
self.relay_worker(task, line)
if acc == "VXI11":
self.relay_worker(task, line, callback)
self.relay_worker(task, line)
def relay_worker(self, task, line, callback):
def relay_worker(self, task, line):
req = requests.post(self.relay_url, data=json.dumps(task), headers = self.headers)
res = req.json()
if 'Result' in res:
if callable(callback):
callback(line, res['Result'])
print(res['Result'])
self.aset('result', line, res['Result'])
print(res['Result'])
if 'ToExchange' in res:
self.aset('exchange', line, res['ToExchange'])
print(res['ToExchange'])
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment