retry logic for when host server is offline during startup of host block
This commit is contained in:
		
							parent
							
								
									5765cf8a59
								
							
						
					
					
						commit
						34a8310f6f
					
				| @ -28,9 +28,20 @@ async def announce_server(): | ||||
|     @sio.event | ||||
|     async def connect(): | ||||
|         await sio.emit('register', {'name': SERVER_NAME, 'ip': SERVER_IP, 'port': SERVER_PORT}) | ||||
|         print("Announced server to host") | ||||
| 
 | ||||
|     async def main(): | ||||
|         # retry until we connect to the host | ||||
|         while True: | ||||
|             try: | ||||
|                 await sio.connect(f'http://{HOST_SERVER_IP}:{HOST_SERVER_PORT}') | ||||
|                 break | ||||
|             except Exception as e: | ||||
|                 print(e) | ||||
|                 print("Failed to connect to host, retrying in 5 seconds") | ||||
|                 await asyncio.sleep(5) | ||||
|         # await sio.connect(f'http://{HOST_SERVER_IP}:{HOST_SERVER_PORT}') | ||||
|         print("Connected to host") | ||||
| 
 | ||||
|     @sio.on("heartbeat") | ||||
|     async def on_heartbeat(): | ||||
| @ -42,24 +53,6 @@ async def announce_server(): | ||||
|      | ||||
|     await main() | ||||
| 
 | ||||
| # def announce_server_decorator(host_block_function): | ||||
| #     @wraps(host_block_function) | ||||
| #     def wrapper(*args, **kwargs): | ||||
| #         loop = asyncio.get_event_loop() | ||||
| 
 | ||||
| #         # Start the server announcement task | ||||
| #         announce_task = loop.create_task(announce_server()) | ||||
| 
 | ||||
| #         # Run the original host_block function | ||||
| #         result = host_block_function(*args, **kwargs) | ||||
| 
 | ||||
| #         # Cancel the announcement task after the host_block function is done | ||||
| #         announce_task.cancel() | ||||
| 
 | ||||
| #         return result | ||||
| 
 | ||||
| #     return wrapper | ||||
| 
 | ||||
| def announce_server_decorator(host_block_function): | ||||
|     @wraps(host_block_function) | ||||
|     def wrapper(*args, **kwargs): | ||||
| @ -69,14 +62,10 @@ def announce_server_decorator(host_block_function): | ||||
| 
 | ||||
|             # Announce the server to the host | ||||
|             await announce_server() | ||||
|             # announce_task = loop.create_task(announce_server()) | ||||
| 
 | ||||
|             # run announcement task infinitely in background but allow host_block to run | ||||
|             # await asyncio.gather(announce_task, host_block_thread) | ||||
|             # Wait for host_block to finish | ||||
|             await host_block_thread | ||||
| 
 | ||||
|             # announce_task.cancel() | ||||
| 
 | ||||
|         return asyncio.run(main()) | ||||
|     return wrapper | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user