python: декоратор с именем переменной функции - PullRequest
0 голосов
/ 22 января 2020

Я хочу выбрать имя функции под декоратором динамически (во время выполнения):

@app.server.route('/downloadable/<path:path>')
def the_name_which_I_actually_would_like_to_set_dynamically(path):
    pass

ОБНОВЛЕНИЕ:

Это более конкретный c код образец. Первый вызов create_endpoint работает нормально, однако я получаю сообщение об ошибке для второго вызова create_endpoint

import dash
from flask import Flask

server = Flask(__name__)
app = dash.Dash(server=server)
app.config['suppress_callback_exceptions']=True

def create_endpoint(function_name = "test_function_name"):
    @app.server.route('/downloadable/<path:path>')
    def test_function_name(path):
        pass

create_endpoint()
create_endpoint()

->

AssertionError: View function mapping is overwriting an existing endpoint function: test_function_name

1 Ответ

1 голос
/ 22 января 2020

Вы можете напрямую использовать add_url_rule. Само правило (шаблон URL) должно быть однозначным, чтобы сервер знал, какую функцию использовать.

def test_function():
    pass

app.server.add_url_rule("/alpha", "alpha", test_function)
app.server.add_url_rule("/bravo", "bravo", test_function)
...