Налагодження (Debugging)¶
Ви можете під'єднати дебагер у Вашому редакторі коду, наприклад, у Visual Studio Code або PyCharm.
Виклик uvicorn
¶
У Вашому FastAPI-додатку імпортуйте та запустіть uvicorn
безпосередньо:
import uvicorn
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def root():
a = "a"
b = "b" + a
return {"hello world": b}
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8000)
Про __name__ == "__main__"
¶
Головна мета використання __name__ == "__main__"
— це забезпечення виконання певного коду тільки тоді, коли файл запускається безпосередньо:
$ python myapp.py
але не виконується при його імпорті в інший файл, наприклад:
from myapp import app
Детальніше¶
Припустимо, Ваш файл називається myapp.py
.
Якщо Ви запустите його так:
$ python myapp.py
тоді внутрішня змінна __name__
, яка створюється автоматично Python, матиме значення "__main__"
.
Отже, цей блок коду:
uvicorn.run(app, host="0.0.0.0", port=8000)
буде виконаний.
Це не станеться, якщо Ви імпортуєте цей модуль (файл).
Якщо у Вас є інший файл, наприклад importer.py
, з наступним кодом:
from myapp import app
# Додатковий код
У цьому випадку автоматично створена змінна у файлі myapp.py
не матиме значення змінної __name__
як "__main__"
.
Отже, рядок:
uvicorn.run(app, host="0.0.0.0", port=8000)
не буде виконано.
Інформація
Більш детальну інформацію можна знайти в офіційній документації Python.
Запуск коду з вашим дебагером¶
Оскільки Ви запускаєте сервер Uvicorn безпосередньо з Вашого коду, Ви можете запустити вашу Python програму (ваш FastAPI додаток) безпосередньо з дебагера.
Наприклад, у Visual Studio Code Ви можете:
- Перейдіть на вкладку "Debug".
- Натисніть "Add configuration...".
- Виберіть "Python"
- Запустіть дебагер з опцією "
Python: Current File (Integrated Terminal)
".
Це запустить сервер з Вашим FastAPI кодом, зупиниться на точках зупину тощо.
Ось як це може виглядати:
Якщо Ви використовуєте PyCharm, ви можете:
- Відкрити меню "Run".
- Вибрати опцію "Debug...".
- Потім з'явиться контекстне меню.
- Вибрати файл для налагодження (у цьому випадку,
main.py
).
Це запустить сервер з Вашим FastAPI кодом, зупиниться на точках зупину тощо.
Ось як це може виглядати: