def do_search() -> 'html': phrase = request.form['phrase'] letters = request.form['letters'] title = 'Here are your results:' results = str(search4letters(phrase, letters)) return render_template('results.html', the_phrase = phrase, the_letters = letters, the_title = title, the_results=results,)
def do_search() -> 'html': """Извлекает данные из запроса, выполняет поиск, возвращает результаты""" phrase = request.form['phrase'] letters = request.form['letters'] title = 'Here are your results:' results = str(search4letters(phrase, letters)) log_request(request,results) #вызов функции журналирования return render_template('results.html', the_phrase = phrase, the_letters = letters, the_title = title, the_results=results,)
def do_search() -> 'html': phrase = request.form['phrase'] letters = request.form['letters'] title = 'Here are your results:' results = str(search4letters(phrase, letters)) log_request(request, results) #вызов функции журналирования return render_template( 'results.html', the_phrase=phrase, the_letters=letters, the_title=title, the_results=results, )
def do_search() -> 'html': @copy_current_request_context #юзаем декоратор, чтобы данные не очищались до выполнения ф-ии def log_request(req: 'flask_request', res: str) -> None: #req передает объект запроса """Функция журналирует веб-запрос в БД и возвращает результаты""" sleep(15) #this makes log_request wery slow... """Теперь используем диспетчер контекста UseDatabase, которому передаем настройки app.config""" with UseDatabase(app.config['dbconfig']) as cursor: _SQL = """insert into log (phrase, letters, ip, browser_string, results) values (%s, %s, %s, %s, %s)""" # создзаем строку с текстом запроса для записи в БД cursor.execute( _SQL, ( req.form['phrase'], #выполняем запрос req.form['letters'], req.remote_addr, req.user_agent. browser, #из строки с описанием браузера извлекается только его название res, )) """Извлекает данные из запроса, выполняет поиск, возвращает результаты""" phrase = request.form['phrase'] letters = request.form['letters'] title = 'Here are your results:' results = str(search4letters(phrase, letters)) try: t = Thread(target=log_request, args=( request, results)) #вызов функции журналирования через многопоточность t.start() #запускаем поток except Exception as err: print('***** Logging failed with this error:', str(err)) return render_template( 'results.html', the_title=title, the_phrase=phrase, the_letters=letters, the_results=results, )
#пример использования установленного дистрибутива import vsearch6 print(vsearch6.search4letters('gottem', 't'))