Skip to content

Commit 892d4f5

Browse files
committed
Even More Bug fixes
1 parent 6503b0e commit 892d4f5

4 files changed

Lines changed: 33 additions & 25 deletions

File tree

shared/utils.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import asyncio
2+
13
async def get_valid_data(requester, category, get_list, retries=3):
24
check_list = await requester.post_request_batch(category, get_list)
35
if not check_list:
@@ -6,5 +8,7 @@ async def get_valid_data(requester, category, get_list, retries=3):
68
if retries <= 0:
79
print(f"{len(get_list) - len(check_list)} objects were unable to be fetched")
810
return check_list, (set(get_list) - {item["uuid"] for item in check_list})
11+
print(f"Retrying {category}...")
12+
await asyncio.sleep(1)
913
return await get_valid_data(requester, category, get_list, retries - 1)
1014
return check_list, []

watcher/jobs/objective.py

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,8 @@ async def check_sessions(requester, tracker):
6363
new_players = online_uuids - set(tracker.sessions)
6464
lost_players = set(tracker.sessions) - online_uuids
6565

66-
active_creations = []
67-
6866
for player in new_players:
6967
tracker.sessions[player] = await Session.create(player)
70-
active_creations.append(tracker.sessions[player].active_obj)
71-
72-
await Active.bulk_create(active_creations, ignore_conflicts=True)
7368

7469
# Get lost player data in batches of 100
7570
if not lost_players:
@@ -197,6 +192,9 @@ async def append_position(player: str, position: tuple, tracker):
197192
async def get_positions(requester, tracker):
198193
print("Getting positions...")
199194
online_data = await requester.map_request()
195+
if not online_data:
196+
print("Online data couldn't be fetched")
197+
return
200198

201199
tasks = [append_position(format_uuid(player["uuid"]), (player["x"], player["y"], player["z"]), tracker) for player in online_data["players"]]
202200

@@ -259,13 +257,8 @@ async def clean_dead_sessions(requester):
259257
if not online_players:
260258
print("Online players couldn't be fetched")
261259
return
262-
deleted_sessions = 0
263-
for active in await Active.all():
264-
if active.player not in {player["uuid"] for player in online_players["players"]}:
265-
await active.delete()
266-
deleted_sessions += 1
267-
268-
print(f"Removed {deleted_sessions} dead sessions")
260+
await Active.filter(player__not_in={player["uuid"] for player in online_players["players"]}).delete()
261+
print(f"Removed dead sessions")
269262

270263
async def safe_rename(town_obj : Towns, new_name, requester):
271264
print(f"Renaming {town_obj.name} to {new_name}")

watcher/jobs/snapshots.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,16 @@
33
async def take_player_snapshot():
44
snapshot_objects = []
55
print("Taking player snapshots...")
6-
for player in await Players.all():
6+
sessions = await Sessions.all()
7+
towns = await Towns.all()
78

8-
sessions = await Sessions.filter(player=player.id)
9+
for player in await Players.all():
910

10-
player_town = await Towns.filter(id=player.town).first()
11+
player_sessions = [session for session in sessions if session.player == player.id]
12+
player_town = [town for town in towns if town.id == player.town][0]
1113

1214
sessions_dict = {}
13-
for session in sessions:
15+
for session in player_sessions:
1416
sessions_dict[str(session.id)] = {
1517
"positions": session.positions,
1618
"start_date": session.start_date.strftime("%Y-%m-%d %H:%M:%S"),
@@ -33,8 +35,10 @@ async def take_town_snapshot():
3335
print("Taking town snapshots...")
3436
snapshot_objects = []
3537

38+
players = await Players.all()
39+
3640
for town in await Towns.all():
37-
citizens = await Players.filter(town=town.id)
41+
citizens = [player for player in players if player.town == town.id]
3842

3943
town_snapshot = TownSnapshot(
4044
town=town.id,

watcher/main.py

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -46,43 +46,50 @@ async def main():
4646
scheduler.add_job(
4747
check_sessions, "interval", minutes=5,
4848
args=[requester, tracker],
49-
id="check_sessions", # stable ID
50-
replace_existing=True # overwrite if already in store
49+
id="check_sessions",
50+
replace_existing=True,
51+
max_instances=1
5152
)
5253
scheduler.add_job(
5354
get_positions, "interval", seconds=60,
5455
args=[requester, tracker],
5556
id="get_positions",
56-
replace_existing=True
57+
replace_existing=True,
58+
max_instances=1
5759
)
5860
scheduler.add_job(
5961
update_map, "interval", hours=12,
6062
args=[requester],
6163
id="update_map",
62-
replace_existing=True
64+
replace_existing=True,
65+
max_instances=1
6366
)
6467
scheduler.add_job(
6568
check_town_blocks, "interval", minutes=60,
6669
args=[requester],
6770
id="check_town_blocks",
68-
replace_existing=True
71+
replace_existing=True,
72+
max_instances=1
6973
)
7074
scheduler.add_job(
7175
take_player_snapshot, "cron", hour=12, minute=0, second=0,
7276
id="player_snapshot",
73-
replace_existing=True
77+
replace_existing=True,
78+
max_instances=1
7479
)
7580
scheduler.add_job(
7681
take_town_snapshot, "cron", hour=12, minute=0, second=0,
7782
id="town_snapshot",
78-
replace_existing=True
83+
replace_existing=True,
84+
max_instances=1
7985
)
8086

8187
scheduler.add_job(
8288
clean_dead_sessions, "interval", minutes=60,
8389
args=[requester],
8490
id="clean_dead_sessions",
85-
replace_existing=True
91+
replace_existing=True,
92+
max_instances=1
8693
)
8794

8895
await load_sessions(tracker)

0 commit comments

Comments
 (0)