Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FastAPI Template: Основа #3

Merged
merged 15 commits into from
Sep 22, 2023
Merged

FastAPI Template: Основа #3

merged 15 commits into from
Sep 22, 2023

Conversation

grucshetskyaleksei
Copy link
Collaborator

No description provided.

Copy link
Owner

@ijaric ijaric left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Хороший первый шаг 👍

  1. PR большой, поэтому сложно дать полный вдумчивый ответ. Плюс я пока не запускал ничего. На этом шаге только просмотрел код.
  2. Я изменил структуру, убрал папку /backend, добавил некоторые технические файлы.
  3. Общее предложение использовать только прямые импорты. Я могу помочь с этим.
  4. Вопросы и предложения внутри.
  5. http клиент, базовые endpoint'ы, тесты итп. я бы делал в следующих PR. Этот и так уже большой.

src/fastapi/docker-compose.dev.yml Outdated Show resolved Hide resolved
container_name: fastapi
image: fastapi_app
restart: always
entrypoint: ["/opt/app/entrypoint.sh"]
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

У тебя entrypoint есть в Dockerfile. Насколько я понимаю, тогда здесь это не нужно.

restart: always
entrypoint: ["/opt/app/entrypoint.sh"]
ports:
- "${server_port}:5432"
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Здесь тоже, пожалуй, будет - "${server_port}:${server_port}".

networks:
- api_network

redis:
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Я бы убрал Redis :)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

На данном этапе можно убрать, но он понадобится при построении API на этапе кеширования ответов

- backend_network
- api_network

nginx:
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Я бы сделал так. Мы с Сережей научились использовать шаблоны и передавать переменные и шаблоны для nginx (пример).

  nginx:
    image: nginx:1.25.1
    restart: always
    env_file:
      - .env
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
      - ./nginx/templates:/etc/nginx/templates
    ports:
      - "${NGINX_PORT}:${NGINX_PORT}"
    depends_on:
      - api

from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker, create_async_engine
from sqlalchemy.orm import DeclarativeBase

from lib.app import settings as lib_app_settings
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

На мой взгляд можно просто app_settings, т.е. import lib.app.settings as app_setttings

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Я бы лучше использовал шаблоны. Можно взять отсюда. nginx сам смотрит в /templates файлы с расширением .template, и использует их для настроек.

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

include conf.d/site.conf;
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

С .template, насколько я понимаю, это строка не нужна.

@@ -28,7 +28,7 @@ def close(self):
del self._faker_client


if __name__ == "__main__":
if __name__ == "__main__.py":
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Подскажи зачем так?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Вручную я этого не делал) аномалия, требующая анализа 🤔

src/python-service/bin/main/__main__.py Outdated Show resolved Hide resolved
# Создаём движок
# Настройки подключения к БД передаём из переменных окружения, которые заранее загружены в файл настроек

database_dsn = (
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Код "в корне" лучше "спрятать" в функцию, чтобы при импорте автоматически не происходило его исполнение.

@ijaric ijaric closed this Sep 20, 2023
@ijaric ijaric reopened this Sep 20, 2023
@ijaric ijaric force-pushed the features/fastapi_template branch 2 times, most recently from 6a21e41 to 79eed00 Compare September 20, 2023 10:21
@ijaric ijaric changed the title add fastapi template FastAPI Template: Основа Sep 20, 2023
@ijaric
Copy link
Owner

ijaric commented Sep 22, 2023

Договорились замерджить эту версию. На неё отдельными PR реализовать задачи из #6

@ijaric ijaric merged commit dc4a15a into main Sep 22, 2023
3 of 7 checks passed
@ijaric ijaric deleted the features/fastapi_template branch September 22, 2023 13:04
@ksieuk ksieuk linked an issue Oct 8, 2023 that may be closed by this pull request
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Шаблон микро-сервиса
3 participants