WebHost: re-introduce per-Room Locker (#3337)
This commit is contained in:
		
							parent
							
								
									cf34f125d6
								
							
						
					
					
						commit
						d3f4ee4994
					
				| 
						 | 
				
			
			@ -21,6 +21,7 @@ import Utils
 | 
			
		|||
 | 
			
		||||
from MultiServer import Context, server, auto_shutdown, ServerCommandProcessor, ClientMessageProcessor, load_server_cert
 | 
			
		||||
from Utils import restricted_loads, cache_argsless
 | 
			
		||||
from .locker import Locker
 | 
			
		||||
from .models import Command, GameDataPackage, Room, db
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -231,17 +232,20 @@ def run_server_process(name: str, ponyconfig: dict, static_server_data: dict,
 | 
			
		|||
    loop = asyncio.get_event_loop()
 | 
			
		||||
 | 
			
		||||
    async def start_room(room_id):
 | 
			
		||||
        with Locker(f"RoomLocker {room_id}"):
 | 
			
		||||
            try:
 | 
			
		||||
                logger = set_up_logging(room_id)
 | 
			
		||||
                ctx = WebHostContext(static_server_data, logger)
 | 
			
		||||
                ctx.load(room_id)
 | 
			
		||||
                ctx.init_save()
 | 
			
		||||
                try:
 | 
			
		||||
                ctx.server = websockets.serve(functools.partial(server, ctx=ctx), ctx.host, ctx.port, ssl=ssl_context)
 | 
			
		||||
                    ctx.server = websockets.serve(
 | 
			
		||||
                        functools.partial(server, ctx=ctx), ctx.host, ctx.port, ssl=ssl_context)
 | 
			
		||||
 | 
			
		||||
                    await ctx.server
 | 
			
		||||
                except OSError:  # likely port in use
 | 
			
		||||
                ctx.server = websockets.serve(functools.partial(server, ctx=ctx), ctx.host, 0, ssl=ssl_context)
 | 
			
		||||
                    ctx.server = websockets.serve(
 | 
			
		||||
                        functools.partial(server, ctx=ctx), ctx.host, 0, ssl=ssl_context)
 | 
			
		||||
 | 
			
		||||
                    await ctx.server
 | 
			
		||||
                port = 0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue