# FastAPI CLI { #fastapi-cli } **FastAPI CLI** - это программа командной строки, которую вы можете использовать, чтобы предоставлять доступ к вашему приложению FastAPI, управлять проектом FastAPI и т.д. При установке FastAPI (например, с помощью `pip install "fastapi[standard]"`) вместе с ним устанавливается программа командной строки, которую можно запускать в терминале. Чтобы запустить ваше приложение FastAPI в режиме разработки, используйте команду `fastapi dev`:
```console $ fastapi dev FastAPI Starting development server 🚀 Searching for package file structure from directories with __init__.py files Importing from /home/user/code/awesomeapp module 🐍 main.py code Importing the FastAPI app object from the module with the following code: from main import app app Using import string: main:app server Server started at http://127.0.0.1:8000 server Documentation at http://127.0.0.1:8000/docs tip Running in development mode, for production use: fastapi run Logs: INFO Will watch for changes in these directories: ['/home/user/code/awesomeapp'] INFO Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) INFO Started reloader process [383138] using WatchFiles INFO Started server process [383153] INFO Waiting for application startup. INFO Application startup complete. ```
/// tip | Подсказка В продакшн вы будете использовать `fastapi run` вместо `fastapi dev`. 🚀 /// Внутри **FastAPI CLI** используется [Uvicorn](https://www.uvicorn.dev), высокопроизводительный, готовый к работе в продакшн ASGI-сервер. 😎 Инструмент командной строки `fastapi` попытается автоматически обнаружить приложение FastAPI для запуска, предполагая, что это объект с именем `app` в файле `main.py` (или в некоторых других вариантах). Но вы можете явно указать, какое приложение использовать. ## Настройте `entrypoint` приложения в `pyproject.toml` { #configure-the-app-entrypoint-in-pyproject-toml } Вы можете настроить, где находится ваше приложение, в файле `pyproject.toml`, например так: ```toml [tool.fastapi] entrypoint = "main:app" ``` Этот `entrypoint` сообщит команде `fastapi`, что приложение нужно импортировать так: ```python from main import app ``` Если ваш код организован так: ``` . ├── backend │   ├── main.py │   ├── __init__.py ``` Тогда следует указать `entrypoint` так: ```toml [tool.fastapi] entrypoint = "backend.main:app" ``` что будет эквивалентно: ```python from backend.main import app ``` ### `fastapi dev` с указанием пути { #fastapi-dev-with-path } Вы также можете передать путь к файлу команде `fastapi dev`, и она постарается определить объект приложения FastAPI: ```console $ fastapi dev main.py ``` Но тогда вам придется каждый раз не забывать передавать правильный путь при вызове команды `fastapi`. Кроме того, другие инструменты могут не найти его, например [Расширение VS Code](editor-support.md) или [FastAPI Cloud](https://fastapicloud.com), поэтому рекомендуется использовать `entrypoint` в `pyproject.toml`. ## `fastapi dev` { #fastapi-dev } Вызов `fastapi dev` запускает режим разработки. По умолчанию включена авто-перезагрузка (**auto-reload**), благодаря этому при изменении кода происходит перезагрузка сервера приложения. Эта установка требует значительных ресурсов и делает систему менее стабильной. Используйте её только при разработке. Приложение слушает входящие подключения на IP `127.0.0.1`. Это IP адрес вашей машины, предназначенный для внутренних коммуникаций (`localhost`). ## `fastapi run` { #fastapi-run } Вызов `fastapi run` по умолчанию запускает FastAPI в режиме продакшн. По умолчанию авто-перезагрузка (**auto-reload**) отключена. Приложение слушает входящие подключения на IP `0.0.0.0`, т.е. на всех доступных адресах компьютера. Таким образом, приложение будет находиться в публичном доступе для любого, кто может подсоединиться к вашей машине. Продуктовые приложения запускаются именно так, например, с помощью контейнеров. В большинстве случаев вы будете (и должны) использовать прокси-сервер ("termination proxy"), который будет поддерживать HTTPS поверх вашего приложения. Всё будет зависеть от того, как вы развертываете приложение: за вас это либо сделает ваш провайдер, либо вам придется сделать настройки самостоятельно. /// tip | Подсказка Вы можете больше узнать об этом в [документации по развертыванию](deployment/index.md). ///