Форум сайта python.su
Мне необходимо создавать Flask сервер из функции (на самом деле это будет метод в классе)
Локально все работает, но на сервере через gunicorn не работает.
я уже пробовал много разных вариантов, вот лишь один из них.
# file test.py def serv(): from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "<h1 style='color:red'>Hello world!</h1>" if __name__ == "__main__": app.run() return app # file wsgi.py from test import serv if __name__ == "__main__": serv().run()
Офлайн
Nev
Мне необходимо создавать Flask сервер из функции
NevЛучше объясни, что ты пытаешься сделать. Пока не поздно.
на самом деле это будет метод в классе
Nev
Если убрать функцию и импортировать без функции, все работает и даже с более простым кодом.
import random class A: def f(self): if random.randint(1, 10) > 5: raise ValueError('1') else: return B() class B: def f(self): if random.randint(1, 10) > 5: raise ValueError('1') else: return C() class C: def f(self): if random.randint(1, 10) > 5: raise ValueError('1') else: return 'c' obj = A() try: print(obj.f().f().f()) except ValueError as e: print('error {} in ?'.format(e))
Отредактировано py.user.next (Фев. 7, 2022 22:01:05)
Офлайн
Спасибо за интерес к моей задаче)
Лучше объясни, что ты пытаешься сделать. Пока не поздно.Хочу написать микрофреймворк на Flask. К серверу будут приходить запросы, на них нужно будет отвечать.
Видно, что ты плохо знаешь сам питон. Локальные импорты, например, не приняты, пишутся новичками, пока они не прочитали базовые вещи вроде PEP8.Так как пишется готовый модуль. Модуль test.py планируется единственным. wsgi.py использует его методы.
Это вот пример, когда из-за цепочки ты не можешь понять, где именно произошла ошибкаСогласен. Эту цепочку вызовов будет сложно тестировать.
# file test.py def servflask(nam): from flask import Flask app = Flask(nam) @app.route("/") def hello(): return "<h1 style='color:blue'>Hello There!</h1>" return app # file wsgi.py from test import servflask servflask(__name__).run()
Exception in worker processХотя сервер запущен как и положено из основного модуля, явно указанного в app, о чем свидетельствует лог запуска:
Отредактировано Nev (Фев. 7, 2022 09:39:46)
Офлайн
все я разобрался. Всем спасибо
Офлайн