From 0aad187956a150e14f632f51281b5c0e6dd30a2c Mon Sep 17 00:00:00 2001 From: rgarcia-herrera Date: Tue, 5 Jul 2022 19:37:36 -0500 Subject: [PATCH] tunning session management --- flockompass.kv | 2 +- main.py | 43 +++++++++++++++++++++---------------------- 2 files changed, 22 insertions(+), 23 deletions(-) diff --git a/flockompass.kv b/flockompass.kv index 1a15e2b..b5c3613 100644 --- a/flockompass.kv +++ b/flockompass.kv @@ -157,7 +157,7 @@ TextInput: id: flock_server font_size: '15sp' - text: 'http://flock.apps.lancis.ecologia.unam.mx' + text: 'http://132.247.90.102' multiline: False BackgroundLabel: text: "Dark theme" diff --git a/main.py b/main.py index 13e5983..80534f7 100644 --- a/main.py +++ b/main.py @@ -83,7 +83,7 @@ class FlockompassApp(App): settings = {'settings_smoothing': 0.88, 'settings_compass_update': 0.88, '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: @@ -318,29 +318,27 @@ class FlockompassApp(App): def flock_server_register(self): # 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('speed', None) self.session_data.pop('bearing', None) + self.session_data.pop('last_update', None) - Logger.info("Unique ID: %s" % uniqueid.get_uid()) - client_id = hashlib.sha256(b"%s/%s/%s" % (uniqueid.get_uid(), - self.session_data['dest_lon'], - self.session_data['dest_lat'], - )).hexdigest() + key = "%s" % uniqueid.get_uid() + client_id = str(hashlib.sha256(key.encode()).hexdigest())[0:10] 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, params={'dest_lon': self.session_data['dest_lon'], 'dest_lat': self.session_data['dest_lat'], 'client_id': client_id}, timeout=0.5) # 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 - 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() except requests.exceptions.Timeout: Logger.info('comm timeout while registering with flock server') @@ -352,13 +350,15 @@ class FlockompassApp(App): def flock_server_update(self): try: - update_url = "{server}/update/{client_id}/?lat={lat}&lon={lon}&speed={speed}&bearing={bearing}" - req = requests.get(update_url.format(server=self.session_data['settings_flock_server'], - client_id=self.session_data['client_id'], - speed=self.session_data.get('speed', 0), - bearing=self.session_data.get('bearing', 0), - lat=self.session_data['lat'], - lon=self.session_data['lon']), + update_url = "{server}/update/{bike_id}/?lat={lat}&lon={lon}&speed={speed}&bearing={bearing}" + req = requests.get("%s/update/%s/" % (self.session_data['settings_flock_server'], + self.session_data['bike_id']), + params={ + 'client_id': self.session_data['client_id'], + 'speed': self.session_data.get('speed', 0), + 'bearing': self.session_data.get('bearing', 0), + 'lat': self.session_data['lat'], + 'lon': self.session_data['lon']}, timeout=0.5) resp = req.json() if resp: @@ -370,8 +370,6 @@ class FlockompassApp(App): self.session_data.pop('flock_lon', None) self.session_data.pop('flock_size', None) - pLogger.info(self.session_data) - except requests.exceptions.Timeout: Logger.info('comm timeout while updating flock server') @@ -388,8 +386,9 @@ class FlockompassApp(App): def flock(self, dt): - if ('session_id' in self.session_data - and (self.session_data.get('last_update') + self.get_session_timeout()) > datetime.now()): + if ('bike_id' in self.session_data + 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() else: self.flock_server_register()