Co-authored-by: pr-submit[bot] <pr-submit[bot]@users.noreply.github.com> Co-authored-by: Yurii Motov <109919500+YuriiMotov@users.noreply.github.com> Co-authored-by: pr-push[bot] <pr-push[bot]@users.noreply.github.com>
4.0 KiB
Debugging
рдЖрдк рдЕрдкрдиреЗ editor рдореЗрдВ debugger connect рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП Visual Studio Code рдпрд╛ PyCharm рдХреЗ рд╕рд╛рдеред
uvicorn рдХреЛ call рдХрд░реЗрдВ
рдЕрдкрдиреЗ FastAPI application рдореЗрдВ, uvicorn рдХреЛ рд╕реАрдзреЗ import рдХрд░рдХреЗ run рдХрд░реЗрдВ:
{* ../../docs_src/debugging/tutorial001_py310.py hl[1,15] *}
__name__ == "__main__" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
__name__ == "__main__" рдХрд╛ рдореБрдЦреНрдп рдЙрджреНрджреЗрд╢реНрдп рдРрд╕рд╛ рдХреБрдЫ code рд░рдЦрдирд╛ рд╣реИ рдЬреЛ рддрдм execute рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдкрдХреА file рдХреЛ рдЗрд╕рдХреЗ рд╕рд╛рде call рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
$ uv run python myapp.py
рд▓реЗрдХрд┐рди рддрдм call рдирд╣реАрдВ рд╣реЛрддрд╛ рдЬрдм рдХреЛрдИ рджреВрд╕рд░реА file рдЗрд╕реЗ import рдХрд░рддреА рд╣реИ, рдЬреИрд╕реЗ рдХрд┐:
from myapp import app
рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг
рдорд╛рди рд▓реАрдЬрд┐рдП рдЖрдкрдХреА file рдХрд╛ рдирд╛рдо myapp.py рд╣реИред
рдЕрдЧрд░ рдЖрдк рдЗрд╕реЗ рдЗрд╕рдХреЗ рд╕рд╛рде run рдХрд░рддреЗ рд╣реИрдВ:
$ uv run python myapp.py
рддреЛ рдЖрдкрдХреА file рдореЗрдВ Python рджреНрд╡рд╛рд░рд╛ рдЕрдкрдиреЗ рдЖрдк рдмрдирд╛рдИ рдЧрдИ internal variable __name__ рдХрд╛ value string "__main__" рд╣реЛрдЧрд╛ред
рддреЛ, рдпрд╣ section:
uvicorn.run(app, host="0.0.0.0", port=8000)
run рд╣реЛрдЧрд╛ред
рдЕрдЧрд░ рдЖрдк рдЙрд╕ module (file) рдХреЛ import рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рддреЛ, рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ importer.py рдирд╛рдо рдХреА рдХреЛрдИ рджреВрд╕рд░реА file рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рд╣реИ:
from myapp import app
# рдХреБрдЫ рдФрд░ code
рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, myapp.py рдХреЗ рдЕрдВрджрд░ рдЕрдкрдиреЗ рдЖрдк рдмрдирд╛рдИ рдЧрдИ variable __name__ рдХрд╛ value "__main__" рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рддреЛ, рдпрд╣ line:
uvicorn.run(app, host="0.0.0.0", port=8000)
execute рдирд╣реАрдВ рд╣реЛрдЧреАред
/// note | рдиреЛрдЯ
рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ Python docs рджреЗрдЦреЗрдВред
///
рдЕрдкрдиреЗ debugger рдХреЗ рд╕рд╛рде рдЕрдкрдирд╛ code run рдХрд░реЗрдВ
рдХреНрдпреЛрдВрдХрд┐ рдЖрдк Uvicorn server рдХреЛ рд╕реАрдзреЗ рдЕрдкрдиреЗ code рд╕реЗ run рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЖрдк рдЕрдкрдиреЗ Python program (рдЕрдкрдиреЗ FastAPI application) рдХреЛ рд╕реАрдзреЗ debugger рд╕реЗ call рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Visual Studio Code рдореЗрдВ, рдЖрдк рдпрд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
- "Debug" panel рдкрд░ рдЬрд╛рдПрдБред
- "Add configuration..."ред
- "Python" рдЪреБрдиреЗрдВред
- "
Python: Current File (Integrated Terminal)" option рдХреЗ рд╕рд╛рде debugger run рдХрд░реЗрдВред
рдлрд┐рд░ рдпрд╣ рдЖрдкрдХреЗ FastAPI code рдХреЗ рд╕рд╛рде server start рдХрд░реЗрдЧрд╛, рдЖрдкрдХреЗ breakpoints рдкрд░ рд░реБрдХреЗрдЧрд╛, рдЖрджрд┐ред
рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:
рдЕрдЧрд░ рдЖрдк PyCharm рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдпрд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
- "Run" menu рдЦреЛрд▓реЗрдВред
- "Debug..." option рдЪреБрдиреЗрдВред
- рдлрд┐рд░ рдПрдХ context menu рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред
- debug рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП file рдЪреБрдиреЗрдВ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ,
main.py)ред
рдлрд┐рд░ рдпрд╣ рдЖрдкрдХреЗ FastAPI code рдХреЗ рд╕рд╛рде server start рдХрд░реЗрдЧрд╛, рдЖрдкрдХреЗ breakpoints рдкрд░ рд░реБрдХреЗрдЧрд╛, рдЖрджрд┐ред
рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ: