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 |     @sio.event | ||||||
|     async def connect(): |     async def connect(): | ||||||
|         await sio.emit('register', {'name': SERVER_NAME, 'ip': SERVER_IP, 'port': SERVER_PORT}) |         await sio.emit('register', {'name': SERVER_NAME, 'ip': SERVER_IP, 'port': SERVER_PORT}) | ||||||
|  |         print("Announced server to host") | ||||||
| 
 | 
 | ||||||
|     async def main(): |     async def main(): | ||||||
|         await sio.connect(f'http://{HOST_SERVER_IP}:{HOST_SERVER_PORT}') |         # 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") |     @sio.on("heartbeat") | ||||||
|     async def on_heartbeat(): |     async def on_heartbeat(): | ||||||
| @ -42,24 +53,6 @@ async def announce_server(): | |||||||
|      |      | ||||||
|     await main() |     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): | def announce_server_decorator(host_block_function): | ||||||
|     @wraps(host_block_function) |     @wraps(host_block_function) | ||||||
|     def wrapper(*args, **kwargs): |     def wrapper(*args, **kwargs): | ||||||
| @ -69,14 +62,10 @@ def announce_server_decorator(host_block_function): | |||||||
| 
 | 
 | ||||||
|             # Announce the server to the host |             # Announce the server to the host | ||||||
|             await announce_server() |             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 |             # Wait for host_block to finish | ||||||
|             await host_block_thread |             await host_block_thread | ||||||
| 
 | 
 | ||||||
|             # announce_task.cancel() |  | ||||||
| 
 | 
 | ||||||
|         return asyncio.run(main()) |         return asyncio.run(main()) | ||||||
|     return wrapper |     return wrapper | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user