Browse Source
Co-authored-by: ivan-abc <[email protected]> Co-authored-by: Vladislav Kramorenko <[email protected]> Co-authored-by: Sebastián Ramírez <[email protected]>pull/9517/merge
committed by
GitHub
2 changed files with 113 additions and 0 deletions
@ -0,0 +1,112 @@ |
|||
# Отладка |
|||
|
|||
Вы можете подключить отладчик в своем редакторе, например, в 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) |
|||
``` |
|||
|
|||
не будет выполнена. |
|||
|
|||
!!! Информация |
|||
Для получения дополнительной информации, ознакомьтесь с <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"> |
Loading…
Reference in new issue