##// END OF EJS Templates
First version RTI, Spectra, Noise + Docker
First version RTI, Spectra, Noise + Docker

File last commit:

r0:476448e11002
r0:476448e11002
Show More
consumers.py
53 lines | 1.8 KiB | text/x-python | PythonLexer
import json
import numpy as np
from datetime import datetime
import mongoengine
from pymongo import MongoClient
from models import Experiment, Data
from channels.handler import AsgiHandler
from channels.auth import channel_session_user
from channels import Group
from profilehooks import profile
# mongoengine.connect('dbplots')
CLIENT = MongoClient('mongo:27017')
DB = CLIENT['dbplots']
# Connected to websocket.connect
def ws_connect(message, code, plot):
# Accept the incoming connection
message.reply_channel.send({'accept': True})
# Add them to the chat group
Group('{}_{}'.format(code, plot)).add(message.reply_channel)
def ws_message(message, code, plot):
# Accept the incoming connection
dt = datetime.strptime(str(json.loads(message.content['text'])['date']), '%d/%m/%Y')
e = DB.experiment.find_one({'date': dt})
if e:
if plot == 'spc':
datas = DB.data.find({'experiment': e['_id']}, ['time', 'data']).sort('time', -1).limit(1)[0]
e['time'] = [datas['time']]
e['spc'] = datas['data']['spc']
e['rti'] = datas['data']['rti']
e['noise'] = datas['data']['noise']
else:
datas = DB.data.find({'experiment': e['_id']}, ['time', 'data']).sort('time', 1)
dum = [(d['time'], d['data'][plot]) for d in datas]
e['time'] = [d[0] for d in dum]
dum = np.array([d[1] for d in dum])
e[plot] = np.swapaxes(dum, 0, 1).tolist()
e.pop('date', None)
e.pop('_id', None)
message.reply_channel.send({'text': json.dumps(e)})
else:
message.reply_channel.send({'text': json.dumps({'interval': 0})})
# Connected to websocket.disconnect
def ws_disconnect(message, code, plot):
Group('{}_{}'.format(code, plot)).discard(message.reply_channel)