forked from zaclys/searxng
		
	Merge pull request #1344 from dalf/fix-sys-modules-iterator
Fix: use sys.modules.copy() to avoid RuntimeError
This commit is contained in:
		
						commit
						1945039017
					
				
					 1 changed files with 5 additions and 1 deletions
				
			
		| 
						 | 
					@ -149,7 +149,11 @@ def set_loggers(engine, engine_name):
 | 
				
			||||||
    engine.logger = logger.getChild(engine_name)
 | 
					    engine.logger = logger.getChild(engine_name)
 | 
				
			||||||
    # the engine may have load some other engines
 | 
					    # the engine may have load some other engines
 | 
				
			||||||
    # may sure the logger is initialized
 | 
					    # may sure the logger is initialized
 | 
				
			||||||
    for module_name, module in sys.modules.items():
 | 
					    # use sys.modules.copy() to avoid "RuntimeError: dictionary changed size during iteration"
 | 
				
			||||||
 | 
					    # see https://github.com/python/cpython/issues/89516
 | 
				
			||||||
 | 
					    # and https://docs.python.org/3.10/library/sys.html#sys.modules
 | 
				
			||||||
 | 
					    modules = sys.modules.copy()
 | 
				
			||||||
 | 
					    for module_name, module in modules.items():
 | 
				
			||||||
        if (
 | 
					        if (
 | 
				
			||||||
            module_name.startswith("searx.engines")
 | 
					            module_name.startswith("searx.engines")
 | 
				
			||||||
            and module_name != "searx.engines.__init__"
 | 
					            and module_name != "searx.engines.__init__"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue