Обновить
0

Пользователь

Отправить сообщение

Так почему сразу не поднять 4 воркера и пусть ждут задач

В чем вообще смысл автоскейла. Селери то скейлится на уровне тачки, значит на ней должны быть зарезервированы ресурсы под скейл, то есть они будут простаивать пока задач нет, а потом тупить раскручиваться

Я думаю, что все кто немного поработал с DRF приходят к пониманию, что все эти вьюсеты зло и не надо их использовать в сложном проекте потому что:

  • одного сериалайзера, пермишен класса, кверисета не достаточно для всех ендпоинтов, и начинаются эти сопли с get_queryset, get_anything

  • много ендпоинов в одном вьюсете начинают раздувать его до безобразия

  • всратый роутинг

Но ведь можно вполне чисто и лаконично писать отдельные вьюхи на каждый ендпоинт вынося бизнес логику в отдельно

# categories_list.py
class CategoryListView(mixins.ListModelMixin, generics.GenericAPIView):
    serializer_class = ...
    required_permission = ...
    permission_classes = ...
    pagination_class = ...

    def get_queryset(self) -> QuerySet[Category]:
        ...

    def get(self, request: Request, *args, **kwargs) -> Response:
        return self.list(request, *args, **kwargs)


# categories_upsert.py
from services.business.categories import category_create, category_update


class CategoryUpsertView(UpsertView):
    serializer_class = ...
    required_permission = ...
    permission_classes = ...

    def get_queryset(self) -> QuerySet[Category]:
        return ...

    def perform_create(self, serializer) -> None:
        category_create(...)

    def perform_update(self, serializer) -> None:
        category_update(...)


# urls.py
path("categories/", views.CategoryListView.as_view(), name="categories_list"),  # noqa: E501
path("categories/create/", views.CategoryUpsertView.as_view(), name="category_create"),  # noqa: E501
path("categories/<int:pk>/set-active/", views.CategorySetActiveView.as_view(), name="category_set_active"),  # noqa: E501
path("categories/<int:pk>/update/", views.CategoryUpsertView.as_view(), name="category_update"),  # noqa: E501


Не нравятся сериалайзеры для моделей, они вполне могут работать без походов в базу если наследовать от базового Serializer и задавать поля явно. Так же и для формирования ответа можно передать в сериаоайзер не кверисет, а писок, не модель а словарь/датакласс

Конечно проблема, что библиотека предлагает сомнительные пути для написания кода из коробки, но пару раз вляпавшись понимаешь куда лезть не стоит, а если есть в команде кто-то кто может дать по рукам, так и вообще хорошо

~~У кого у нас?? Я на питоне пишу)~~

Перечитал и понял смысл?

Да это все понятно, но слишком много бойлерплейта. Иногда просто хочется написать foo?.bar?.baz без необходимости определять структуры данных и их инициализировать.

Да, странное решение с точками. Так не хватает возможности обращаться к ключам, как к атрибутам. Как в JS

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность