Я надеюсь иметь класс, который подклассов threading.thread
и отвечает за запуск flask. Класс должен также инкапсулировать декоратор
flask.
Декоратор route
предоставляется экземпляром объекта Flask. Я надеюсь содержать все Flask, относящиеся к классу.
*1007* Это приводит к проблеме, где получить декоратор, я должен получить доступ к Flask в качестве атрибута экземпляра. Но
@self
недоступен как декоратор.
Я знаю, что это можно преодолеть, сделав Flask глобальным для модуля et c. Есть ли способ сохранить его внутри класса и все еще достичь этого?
import threading
from flask import Flask
class ControllableServer(threading.Thread):
def __init__(self):
self._flask = Flask(__name__)
# This needs to be a decorator from an initialised flask object
# In the examles they usually do:
# app = Flask(__name__)
# @app.route(("/endpoint", methods=['GET', 'POST'])
# def endpoint():
# ....
@self._flask.route("/endpoint", methods=['GET', 'POST'])
def _endpoint(self):
return str("Endpoint")
def run(self):
self._flask.run()
if __name__ == "__main__":
controllable_server = ControllableServer()
controllable_server.start()
Ошибка:
@self._flask.route("/endpoint", methods=['GET', 'POST']
All│NameError: name 'self' is not defined