Merge pull request #2237 from dalf/mod-engines-init

Mod engines init
This commit is contained in:
Alexandre Flament 2020-10-05 11:20:46 +02:00 committed by GitHub
commit 584760cf54
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 32 additions and 7 deletions

View file

@ -28,11 +28,8 @@ numfig = True
exclude_patterns = ['build-templates/*.rst'] exclude_patterns = ['build-templates/*.rst']
from searx import webapp from searx import webapp
import searx.engines
searx.engines.initialize_engines(searx.settings['engines'])
jinja_contexts = { jinja_contexts = {
'webapp': dict(**webapp.__dict__), 'webapp': dict(**webapp.__dict__),
'engines': searx.engines.engines
} }
# usage:: lorem :patch:`f373169` ipsum # usage:: lorem :patch:`f373169` ipsum

View file

@ -65,7 +65,7 @@ from searx.engines import (
from searx.webutils import ( from searx.webutils import (
UnicodeWriter, highlight_content, get_resources_directory, UnicodeWriter, highlight_content, get_resources_directory,
get_static_files, get_result_templates, get_themes, 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.webadapter import get_search_query_from_webapp, get_selected_categories
from searx.utils import html_to_text, gen_useragent, dict_subset, match_language 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.jinja_env.add_extension('jinja2.ext.loopcontrols')
app.secret_key = settings['server']['secret_key'] app.secret_key = settings['server']['secret_key']
if not searx_debug \ # see https://flask.palletsprojects.com/en/1.1.x/cli/
or os.environ.get("WERKZEUG_RUN_MAIN") == "true" \ # True if "FLASK_APP=searx/webapp.py FLASK_ENV=development flask run"
or os.environ.get('UWSGI_ORIGINAL_PROC_NAME') is not None: 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']) initialize_engines(settings['engines'])
babel = Babel(app) babel = Babel(app)

View file

@ -4,6 +4,7 @@ import csv
import hashlib import hashlib
import hmac import hmac
import re import re
import inspect
from io import StringIO from io import StringIO
from codecs import getincrementalencoder from codecs import getincrementalencoder
@ -127,3 +128,18 @@ def highlight_content(content, query):
content, flags=re.I | re.U) content, flags=re.I | re.U)
return content 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')