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:
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"

43
main.py
View File

@ -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()