forked from zaclys/searxng
		
	[mod] webapp.py: update engines initialization condition
Always call initialize engines except on the first run of werkzeug with the reload feature. the reload feature is activated when: * searx_debug is True (SEARX_DEBUG environment variable or settings.yml) * FLASK_APP=searx/webapp.py FLASK_ENV=development flask run (see https://flask.palletsprojects.com/en/1.1.x/cli/ ) Fix SEARX_DEBUG=0 make docs docs/admin/engines.rst : engines are initialized See https://github.com/searx/searx/issues/2204#issuecomment-701373438
This commit is contained in:
		
							parent
							
								
									2cafc5462d
								
							
						
					
					
						commit
						6c39917c4d
					
				
					 2 changed files with 32 additions and 4 deletions
				
			
		|  | @ -65,7 +65,7 @@ from searx.engines import ( | |||
| from searx.webutils import ( | ||||
|     UnicodeWriter, highlight_content, get_resources_directory, | ||||
|     get_static_files, get_result_templates, get_themes, | ||||
|     prettify_url, new_hmac | ||||
|     prettify_url, new_hmac, is_flask_run_cmdline | ||||
| ) | ||||
| from searx.webadapter import get_search_query_from_webapp, get_selected_categories | ||||
| from searx.utils import html_to_text, gen_useragent, dict_subset, match_language | ||||
|  | @ -114,9 +114,21 @@ app.jinja_env.lstrip_blocks = True | |||
| app.jinja_env.add_extension('jinja2.ext.loopcontrols') | ||||
| app.secret_key = settings['server']['secret_key'] | ||||
| 
 | ||||
| if not searx_debug \ | ||||
|    or os.environ.get("WERKZEUG_RUN_MAIN") == "true" \ | ||||
|    or os.environ.get('UWSGI_ORIGINAL_PROC_NAME') is not None: | ||||
| # see https://flask.palletsprojects.com/en/1.1.x/cli/ | ||||
| # True if "FLASK_APP=searx/webapp.py FLASK_ENV=development flask run" | ||||
| flask_run_development = \ | ||||
|     os.environ.get("FLASK_APP") is not None\ | ||||
|     and os.environ.get("FLASK_ENV") == 'development'\ | ||||
|     and is_flask_run_cmdline() | ||||
| 
 | ||||
| # True if reload feature is activated of werkzeug, False otherwise (including uwsgi, etc..) | ||||
| #  __name__ != "__main__" if searx.webapp is imported (make test, make docs, uwsgi...) | ||||
| # see run() at the end of this file : searx_debug activates the reload feature. | ||||
| werkzeug_reloader = flask_run_development or (searx_debug and __name__ == "__main__") | ||||
| 
 | ||||
| # initialize the engines except on the first run of the werkzeug server. | ||||
| if not werkzeug_reloader\ | ||||
|    or (werkzeug_reloader and os.environ.get("WERKZEUG_RUN_MAIN") == "true"): | ||||
|     initialize_engines(settings['engines']) | ||||
| 
 | ||||
| babel = Babel(app) | ||||
|  |  | |||
|  | @ -4,6 +4,7 @@ import csv | |||
| import hashlib | ||||
| import hmac | ||||
| import re | ||||
| import inspect | ||||
| 
 | ||||
| from io import StringIO | ||||
| from codecs import getincrementalencoder | ||||
|  | @ -125,3 +126,18 @@ def highlight_content(content, query): | |||
|                          content, flags=re.I | re.U) | ||||
| 
 | ||||
|     return content | ||||
| 
 | ||||
| 
 | ||||
| def is_flask_run_cmdline(): | ||||
|     """Check if the application was started using "flask run" command line | ||||
| 
 | ||||
|     Inspect the callstack. | ||||
|     See https://github.com/pallets/flask/blob/master/src/flask/__main__.py | ||||
| 
 | ||||
|     Returns: | ||||
|         bool: True if the application was started using "flask run". | ||||
|     """ | ||||
|     frames = inspect.stack() | ||||
|     if len(frames) < 2: | ||||
|         return False | ||||
|     return frames[-2].filename.endswith('flask/cli.py') | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Alexandre Flament
						Alexandre Flament