tunning session management

This commit is contained in:
rgarcia-herrera 2022-07-05 19:37:36 -05:00
parent 644974a51c
commit 0aad187956
2 changed files with 22 additions and 23 deletions

View File

@ -157,7 +157,7 @@
TextInput: TextInput:
id: flock_server id: flock_server
font_size: '15sp' font_size: '15sp'
text: 'http://flock.apps.lancis.ecologia.unam.mx' text: 'http://132.247.90.102'
multiline: False multiline: False
BackgroundLabel: BackgroundLabel:
text: "Dark theme" text: "Dark theme"

43
main.py
View File

@ -83,7 +83,7 @@ class FlockompassApp(App):
settings = {'settings_smoothing': 0.88, settings = {'settings_smoothing': 0.88,
'settings_compass_update': 0.88, 'settings_compass_update': 0.88,
'settings_theme': "dark", 'settings_theme': "dark",
'settings_flock_server': 'http://flock.apps.lancis.ecologia.unam.mx' 'settings_flock_server': 'http://132.247.90.102'
} }
with open(pickle_path, 'wb') as f: with open(pickle_path, 'wb') as f:
@ -318,29 +318,27 @@ class FlockompassApp(App):
def flock_server_register(self): def flock_server_register(self):
# flush session data # flush session data
self.session_data.pop('session_id', None) self.session_data.pop('bike_id', None)
self.session_data.pop('client_id', None) self.session_data.pop('client_id', None)
self.session_data.pop('speed', None) self.session_data.pop('speed', None)
self.session_data.pop('bearing', None) self.session_data.pop('bearing', None)
self.session_data.pop('last_update', None)
Logger.info("Unique ID: %s" % uniqueid.get_uid()) key = "%s" % uniqueid.get_uid()
client_id = hashlib.sha256(b"%s/%s/%s" % (uniqueid.get_uid(), client_id = str(hashlib.sha256(key.encode()).hexdigest())[0:10]
self.session_data['dest_lon'],
self.session_data['dest_lat'],
)).hexdigest()
try: try:
register_url = "{server}/register/" % self.session_data['settings_flock_server'] register_url = "%s/register/" % self.session_data['settings_flock_server']
Logger.info('trying %s' % register_url)
r = requests.get(register_url, r = requests.get(register_url,
params={'dest_lon': self.session_data['dest_lon'], params={'dest_lon': self.session_data['dest_lon'],
'dest_lat': self.session_data['dest_lat'], 'dest_lat': self.session_data['dest_lat'],
'client_id': client_id}, 'client_id': client_id},
timeout=0.5) timeout=0.5)
# TODO: check for response code, only proceed if 200 # TODO: check for response code, only proceed if 200
self.session_data['session_id'] = r.json()['session_id'] self.session_data['bike_id'] = r.json()['bike_id']
self.session_data['client_id'] = client_id self.session_data['client_id'] = client_id
Logger.info('registered! got session_id: %s' % self.session_data['session_id']) Logger.info('registered! got bike_id: %s' % self.session_data['bike_id'])
self.flock_server_update() self.flock_server_update()
except requests.exceptions.Timeout: except requests.exceptions.Timeout:
Logger.info('comm timeout while registering with flock server') Logger.info('comm timeout while registering with flock server')
@ -352,13 +350,15 @@ class FlockompassApp(App):
def flock_server_update(self): def flock_server_update(self):
try: try:
update_url = "{server}/update/{client_id}/?lat={lat}&lon={lon}&speed={speed}&bearing={bearing}" update_url = "{server}/update/{bike_id}/?lat={lat}&lon={lon}&speed={speed}&bearing={bearing}"
req = requests.get(update_url.format(server=self.session_data['settings_flock_server'], req = requests.get("%s/update/%s/" % (self.session_data['settings_flock_server'],
client_id=self.session_data['client_id'], self.session_data['bike_id']),
speed=self.session_data.get('speed', 0), params={
bearing=self.session_data.get('bearing', 0), 'client_id': self.session_data['client_id'],
lat=self.session_data['lat'], 'speed': self.session_data.get('speed', 0),
lon=self.session_data['lon']), 'bearing': self.session_data.get('bearing', 0),
'lat': self.session_data['lat'],
'lon': self.session_data['lon']},
timeout=0.5) timeout=0.5)
resp = req.json() resp = req.json()
if resp: if resp:
@ -370,8 +370,6 @@ class FlockompassApp(App):
self.session_data.pop('flock_lon', None) self.session_data.pop('flock_lon', None)
self.session_data.pop('flock_size', None) self.session_data.pop('flock_size', None)
pLogger.info(self.session_data)
except requests.exceptions.Timeout: except requests.exceptions.Timeout:
Logger.info('comm timeout while updating flock server') Logger.info('comm timeout while updating flock server')
@ -388,8 +386,9 @@ class FlockompassApp(App):
def flock(self, dt): def flock(self, dt):
if ('session_id' in self.session_data if ('bike_id' in self.session_data
and (self.session_data.get('last_update') + self.get_session_timeout()) > datetime.now()): and 'last_update' in self.session_data
and (self.session_data.get('last_update', 0) + self.get_session_timeout()) > datetime.now()):
self.flock_server_update() self.flock_server_update()
else: else:
self.flock_server_register() self.flock_server_register()