예제 #1
0
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,)
예제 #2
0
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,)
예제 #3
0
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,
    )
예제 #4
0
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,
    )
예제 #5
0
#пример использования установленного дистрибутива
import vsearch6

print(vsearch6.search4letters('gottem', 't'))