fastapi/docs/ru/docs/tutorial/debugging.md

116 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Отладка
Вы можете подключить отладчик в своем редакторе, например, в Visual Studio Code или PyCharm.
## Вызов `uvicorn`
В вашем FastAPI приложении, импортируйте и вызовите `uvicorn` напрямую:
```Python hl_lines="1 15"
{!../../docs_src/debugging/tutorial001.py!}
```
### Описание `__name__ == "__main__"`
Главная цель использования `__name__ == "__main__"` в том, чтобы код выполнялся при запуске файла с помощью:
<div class="termy">
```console
$ python myapp.py
```
</div>
но не вызывался, когда другой файл импортирует это, например:
```Python
from myapp import app
```
#### Больше деталей
Давайте назовём ваш файл `myapp.py`.
Если вы запустите его с помощью:
<div class="termy">
```console
$ python myapp.py
```
</div>
то встроенная переменная `__name__`, автоматически создаваемая Python в вашем файле, будет иметь значение строкового типа `"__main__"`.
Тогда выполнится условие и эта часть кода:
```Python
uvicorn.run(app, host="0.0.0.0", port=8000)
```
будет запущена.
---
Но этого не произойдет, если вы импортируете этот модуль (файл).
Таким образом, если у вас есть файл `importer.py` с таким импортом:
```Python
from myapp import app
# Some more code
```
то автоматическая создаваемая внутри файла `myapp.py` переменная `__name__` будет иметь значение отличающееся от `"__main__"`.
Следовательно, строка:
```Python
uvicorn.run(app, host="0.0.0.0", port=8000)
```
не будет выполнена.
/// info | "Информация"
Для получения дополнительной информации, ознакомьтесь с <a href="https://docs.python.org/3/library/__main__.html" class="external-link" target="_blank">официальной документацией Python</a>.
///
## Запуск вашего кода с помощью отладчика
Так как вы запускаете сервер Uvicorn непосредственно из вашего кода, вы можете вызвать Python программу (ваше FastAPI приложение) напрямую из отладчика.
---
Например, в Visual Studio Code вы можете выполнить следующие шаги:
* Перейдите на панель "Debug".
* Выберите "Add configuration...".
* Выберите "Python"
* Запустите отладчик "`Python: Current File (Integrated Terminal)`".
Это запустит сервер с вашим **FastAPI** кодом, остановится на точках останова, и т.д.
Вот как это может выглядеть:
<img src="/img/tutorial/debugging/image01.png">
---
Если используете Pycharm, вы можете выполнить следующие шаги:
* Открыть "Run" меню.
* Выбрать опцию "Debug...".
* Затем в появившемся контекстном меню.
* Выбрать файл для отладки (в данном случае, `main.py`).
Это запустит сервер с вашим **FastAPI** кодом, остановится на точках останова, и т.д.
Вот как это может выглядеть:
<img src="/img/tutorial/debugging/image02.png">