##// END OF EJS Templates
New template, clean code, workig for realtime
New template, clean code, workig for realtime

File last commit:

r21:dc5f8680b6e1
r21:dc5f8680b6e1
Show More
consumers.py
81 lines | 3.0 KiB | text/x-python | PythonLexer
Developer
New version with cards and status alerts
r11 #!/usr/bin/python
# -*- coding: UTF-8 -*-
Juan C. Espinoza
Docker working
r1 import os
First version RTI, Spectra, Noise + Docker
r0 import json
Reorganize models, smaller docker, others
r2
Juan C. Espinoza
New template, clean code, workig for realtime
r21 from datetime import datetime, timedelta
Juan C. Espinoza
Docker working
r1
First version RTI, Spectra, Noise + Docker
r0 from pymongo import MongoClient
from channels.handler import AsgiHandler
from channels.auth import channel_session_user
from channels import Group
Developer
New version with cards and status alerts
r11 # Here we create the db named "dbplots"
Juan C. Espinoza
Docker working
r1 host = os.environ.get('HOST_MONGO', 'localhost')
CLIENT = MongoClient('{}:27017'.format(host))
First version RTI, Spectra, Noise + Docker
r0 DB = CLIENT['dbplots']
# Connected to websocket.connect
Juan C. Espinoza
New template, clean code, workig for realtime
r21 def ws_connect(message, id, code, plot):
if id == 'main':
Developer
New version with cards and status alerts
r11 Group('main').add(message.reply_channel)
print('New main connection')
Juan C. Espinoza
New template, clean code, workig for realtime
r21 elif id == 'realtime':
Group('{}_{}'.format(code, plot)).add(message.reply_channel)
print('New connection from: {}, Group: {}_{}'.format(message.content['client'][0], code, plot))
Developer
New version with cards and status alerts
r11 else:
Juan C. Espinoza
New template, clean code, workig for realtime
r21 print('New connection from: {}, history, id: {}'.format(message.content['client'][0], id))
message.reply_channel.send({
'accept': True
})
First version RTI, Spectra, Noise + Docker
r0
Juan C. Espinoza
New template, clean code, workig for realtime
r21 def ws_message(message, id, code, plot):
First version RTI, Spectra, Noise + Docker
r0 # Accept the incoming connection
dt = datetime.strptime(str(json.loads(message.content['text'])['date']), '%d/%m/%Y')
Juan C. Espinoza
New template, clean code, workig for realtime
r21 exp0 = DB.exp_meta.find_one({'code': int(code), 'date': dt-timedelta(days=1)})
Reorganize models, smaller docker, others
r2 exp = DB.exp_meta.find_one({'code': int(code), 'date': dt})
Juan C. Espinoza
New template, clean code, workig for realtime
r21 print('New request for id={}'.format(id))
Fix server for noise data, correct codes
r3 if exp and plot in exp['plots']:
First version RTI, Spectra, Noise + Docker
r0 if plot == 'spc':
Reorganize models, smaller docker, others
r2 datas = DB.exp_data.find({'expmeta': exp['_id']}, ['time', 'data']).sort('time', -1).limit(1)[0]
exp['time'] = [datas['time']]
exp['spc'] = datas['data']['spc']
exp['rti'] = datas['data']['rti']
exp['noise'] = datas['data']['noise']
First version RTI, Spectra, Noise + Docker
r0 else:
Juan C. Espinoza
New template, clean code, workig for realtime
r21 last = DB.exp_data.find_one({'expmeta': exp['_id']}, ['time'], sort=[('time', -1)])
if exp0:
datas = DB.exp_data.find(
{
'expmeta': {'$in': [exp0['_id'], exp['_id']]},
'time': {'$gt': last['time']-12*60*60}
},
['time', 'data'],
sort=[('time', 1)],
limit=720
)
else:
datas = DB.exp_data.find(
{
'expmeta': exp['_id'],
'time': {'$gt': last['time']-12*60*60}
},
['time', 'data'],
sort=[('time', 1)],
limit=720
)
First version RTI, Spectra, Noise + Docker
r0 dum = [(d['time'], d['data'][plot]) for d in datas]
Reorganize models, smaller docker, others
r2 exp['time'] = [d[0] for d in dum]
Juan C. Espinoza
Docker working
r1 dum = [d[1] for d in dum]
Developer
New version with cards and status alerts
r11 exp[plot] = [t for t in map(list, zip(*dum))]
Juan C. Espinoza
New template, clean code, workig for realtime
r21
Reorganize models, smaller docker, others
r2 exp.pop('date', None)
exp.pop('_id', None)
message.reply_channel.send({'text': json.dumps(exp)})
First version RTI, Spectra, Noise + Docker
r0 else:
message.reply_channel.send({'text': json.dumps({'interval': 0})})
# Connected to websocket.disconnect
Juan C. Espinoza
New template, clean code, workig for realtime
r21 def ws_disconnect(message, id, code, plot):
First version RTI, Spectra, Noise + Docker
r0 Group('{}_{}'.format(code, plot)).discard(message.reply_channel)