From 04456558ac193153cb1143535db4f14960d67171 Mon Sep 17 00:00:00 2001 From: ShadowNinja Date: Sat, 10 Jul 2021 15:00:13 -0400 Subject: [PATCH] Reduce ping update frequency --- server_list/tasks.py | 44 +++++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/server_list/tasks.py b/server_list/tasks.py index f68d2ea..c861ce4 100644 --- a/server_list/tasks.py +++ b/server_list/tasks.py @@ -29,23 +29,6 @@ def update_server(obj): db.session.commit() -def update_ping(): - servers = Server.query.filter_by(online=True).all() - - addresses = [(s.address, s.port) for s in servers] - pings = [] - - async def do_ping(): - pings.extend(await ping_servers_async(addresses)) - asyncio.run(do_ping()) - - for i, server in enumerate(servers): - if pings[i] is None: - server.set_offline() - else: - server.ping = pings[i] - - def update_list_json(): online_servers = Server.query.filter_by(online=True).all() online_servers.sort(key=server_ranking, reverse=True) @@ -77,7 +60,7 @@ def update_list_json(): @celery.task -def maintenance(): +def update_list(): cutoff = datetime.utcnow() - app.config["PURGE_TIME"] expired_servers = Server.query.filter( Server.online == True, @@ -87,13 +70,32 @@ def maintenance(): for server in expired_servers: server.set_offline() - update_ping() - update_list_json() db.session.commit() +@celery.task +def update_ping(): + servers = Server.query.filter_by(online=True).all() + + addresses = [(s.address, s.port) for s in servers] + pings = [] + + async def do_ping(): + pings.extend(await ping_servers_async(addresses)) + asyncio.run(do_ping()) + + for i, server in enumerate(servers): + if pings[i] is None: + server.set_offline() + else: + server.ping = pings[i] + + db.session.commit() + + @celery.on_after_configure.connect def setup_periodic_tasks(sender, **kwargs): - sender.add_periodic_task(60, maintenance.s(), name='Server list maintenance') + sender.add_periodic_task(60, update_list.s(), name='Update server list') + sender.add_periodic_task(5*60, update_ping.s(), name='Update server ping')