Skip to content

Commit 697d117

Browse files
committed
fix duplicate session
1 parent 2c13044 commit 697d117

File tree

1 file changed

+49
-53
lines changed

1 file changed

+49
-53
lines changed

telemetry/pitcrew/session_saver.py

+49-53
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
import logging
22
import threading
3-
import time
43

54
from django.db import IntegrityError
65

7-
from telemetry.models import Driver, Game, Session, SessionType
6+
from telemetry.models import Driver, Game, SessionType
87

98

109
class SessionSaver:
@@ -22,47 +21,47 @@ def stop(self):
2221
def stopped(self):
2322
return self._stop_event.is_set()
2423

25-
def save_sessions_loop(self):
26-
while True and not self.stopped():
27-
if self.save:
28-
self.save_sessions()
29-
else:
30-
self.fetch_sessions()
31-
self.ready = True
32-
time.sleep(self.sleep_time)
33-
34-
def fetch_sessions(self):
35-
session_ids = list(self.firehose.sessions.keys())
36-
for session_id in session_ids:
37-
session = self.firehose.sessions.get(session_id)
38-
if not session.record:
39-
try:
40-
session.driver = Driver.objects.get(name=session.driver)
41-
session.game = Game.objects.get(name=session.game_name)
42-
session.session_type = SessionType.objects.get(type=session.session_type)
43-
session.car, created = session.game.cars.get_or_create(name=session.car)
44-
session.car.car_class, created = session.game.car_classes.get_or_create(name=session.car_class)
45-
session.track, created = session.game.tracks.get_or_create(name=session.track)
46-
session.record = session.driver.sessions.filter(
47-
session_id=session.session_id,
48-
session_type=session.session_type,
49-
game=session.game,
50-
car=session.car,
51-
track=session.track,
52-
).first() or Session(
53-
session_id=session.session_id,
54-
session_type=session.session_type,
55-
game=session.game,
56-
car=session.car,
57-
track=session.track,
58-
start=session.start,
59-
end=session.end,
60-
)
61-
logging.debug(f"{session.session_id}: Fetched session {session_id}")
62-
except Exception as e:
63-
# TODO add error to session to expire
64-
logging.error(f"{session.session_id}: Error fetching session {session_id}: {e}")
65-
continue
24+
# def save_sessions_loop(self):
25+
# while True and not self.stopped():
26+
# if self.save:
27+
# self.save_sessions()
28+
# else:
29+
# self.fetch_sessions()
30+
# self.ready = True
31+
# time.sleep(self.sleep_time)
32+
33+
# def fetch_sessions(self):
34+
# session_ids = list(self.firehose.sessions.keys())
35+
# for session_id in session_ids:
36+
# session = self.firehose.sessions.get(session_id)
37+
# if not session.record:
38+
# try:
39+
# session.driver = Driver.objects.get(name=session.driver)
40+
# session.game = Game.objects.get(name=session.game_name)
41+
# session.session_type = SessionType.objects.get(type=session.session_type)
42+
# session.car, created = session.game.cars.get_or_create(name=session.car)
43+
# session.car.car_class, created = session.game.car_classes.get_or_create(name=session.car_class)
44+
# session.track, created = session.game.tracks.get_or_create(name=session.track)
45+
# session.record = session.driver.sessions.filter(
46+
# session_id=session.session_id,
47+
# session_type=session.session_type,
48+
# game=session.game,
49+
# car=session.car,
50+
# track=session.track,
51+
# ).first() or Session(
52+
# session_id=session.session_id,
53+
# session_type=session.session_type,
54+
# game=session.game,
55+
# car=session.car,
56+
# track=session.track,
57+
# start=session.start,
58+
# end=session.end,
59+
# )
60+
# logging.debug(f"{session.session_id}: Fetched session {session_id}")
61+
# except Exception as e:
62+
# # TODO add error to session to expire
63+
# logging.error(f"{session.session_id}: Error fetching session {session_id}: {e}")
64+
# continue
6665

6766
def save_sessions(self):
6867
session_ids = list(self.firehose.sessions.keys())
@@ -85,14 +84,11 @@ def save_sessions(self):
8584
(
8685
session.record,
8786
created,
88-
) = session.driver.sessions.get_or_create(
89-
session_id=session.session_id,
90-
session_type=session.session_type,
91-
game=session.game,
92-
car=session.car,
93-
track=session.track,
94-
defaults={"start": session.start, "end": session.end},
95-
)
87+
) = session.driver.sessions.get_or_create(session_id=session.session_id, session_type=session.session_type, game=session.game)
88+
session.record.car = session.car
89+
session.record.track = session.track
90+
session.record.start = session.start
91+
session.record.save_dirty_fields()
9692
logging.debug(f"{session.session_id}: Saving session {session_id}")
9793
except Exception as e:
9894
# TODO add error to session to expire
@@ -151,5 +147,5 @@ def save_sessions(self):
151147
track.length = lap_length
152148
track.save()
153149

154-
def run(self):
155-
self.save_sessions_loop()
150+
# def run(self):
151+
# self.save_sessions_loop()

0 commit comments

Comments
 (0)