Pull to refresh
2
0
Pavel Denisov @rSedoy

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

Send message
@sync_to_async
def get_zodiac_data(zodiac_name):
    return ZodiacSign.objects.get(zodiac_en=zodiac_name)

а почему не сразу так?

async def get_zodiac_data(zodiac_name):
    return await ZodiacSign.objects.aget(zodiac_en=zodiac_name)

class GeometricFigure:
	def __init__(self, name: str, x_coord: int, y_coord: int):
		self.name = name
		self.x_coord = x_coord
		self.y_coord = y_coord

	def change_coordinates(self, new_x_coord: int, new_y_coord: int):
		self.x_coord = new_x_coord
		self.y_coord = new_y_coord

и вот прям сразу спорный момент, по мне, coord и new_x_coord тут избыточно, название класса и последующий контекст достаточен чтобы были короткие имена x и y, так же спорно название метода change_coordinates, но мне сложно сейчас предложить вариант, тут я бы отталкивался от общей роли этого класса в проекте. Итог:

class GeometricFigure:
	def __init__(self, name: str, x: int, y: int):
		self.name = name
		self.x = x
		self.y = y

	def change_coordinates(self, x: int, y: int):
		self.x = x
		self.y = y

а еще, когда вдруг у фигуры, сначала идет какое-то name, а не логичные x и y, я хочу именованные аргументы

def __init__(self, *, name: str, x: int, y: int):

ага, а если учесть что у aiogram под капотом aiohttp, то можно сказать, что асинхронный клиент уже досутпен из коробки.

Основные затраты времени, это обдумывание решений и тому подобное. Код относительно этого пишется быстро, а всякие автодополнения, алиасы и прочее, больше субъективные удобства, их влияние на общее время разработки незначительное. Так что "сэкономленные" это больше манипуляция статистикой.

Основной смысл параметра заключается в том, чтобы при использовании критических функций, таких как удаление таблицы или всех данных из таблицы, необходимо было явно указывать тот пароль, который был передан при инициации класса. Это сделано для защиты от случайного удаления данных и от несанкционированного доступа.

Тащить метод из интерактивного взаимодействия в сам код, очень сомнительное решение, откуда взялось случайно удаление в самом коде? Да и несанкционированный доступ, тут тоже боком.

оставлю ссылку на интересную статью про декораторы https://habr.com/ru/articles/750312/ чтобы было с чем сравнивать

for char_ in chars:
а что стало причиной появление подчеркивания?

Ваш пример для ЯП со слабой типизацией, у python она строгая, а тут подняли проблему динамической типизации, это как бы совсем другое.

вы упорно приводите примеры проблемы, которой нет в Python, вам упорно говорят, что тут подняли немного другую проблему

потому что, зачем нам писать свою обертку для Starlette, когда уже есть FastAPI

Сейчас малоизвестные - Litestar, PonyOrm, Rye, а мерятся звездами вообще последнее дело. Болото у всех свое, но я точно могу сказать, что про FastAPI больше знают, чем даже про упомянутый Sanic, про Litestar уже молчу.

А с unitest всё не так, как и с threading, им не очень удобно пользоваться, обычно проще concurrent.

Потому что половина из этого очень малоизвестные библиотеки, еще странно сравнивать стандартный unittest с pytest, а про установку пакетов, я сразу написал, что есть варианты, вот почему вы conda захотели, а не, например uv (почему вообще сравнение Poetr с Rye и Pipenv с conda, это отдельные пункты)? так же с другими, flake8 как пример, вот я же упомянул тот же ruff, он сейчас уже может заменить кучу из подобных.

А про "лютые костыли", так это часто проблема не библиотеки, а именно конкретного приложения.

Возьмем Litestar, я про него только сейчас узнал, зачем сейчас мне тащить его в свой стек разработки? С тем же FastAPI такой вопрос был года два назад (а может и раньше, точно не скажу), но он доказал свою эффективность. Возможно с Litestar так же будет, а может и нет.

скажите, а зачем упоминать FastAPI если в данной подборке я выбрал Django, как рекомендованный мною фреймворк?) в таком случае нужно было и про Flask и Pyramid сюда пихать)

я сразу назвал причину зачем - "Слишком однобоко" и чтобы минимум знать хотя бы одну альтернативу

я ясно выразился, что перечислил ТОЛЬКО стек для входа в веб разработку

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

а что касается flake8 и подобного: линтинг также учится раньше чем веб)

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

Слишком однобоко, я бы минимум добавил связку FastAPI + SQLAlchemy + Alembic. А раз упомянуты инструменты разработки, то рассказать про управление установкой пакетов poerty, pipenv + еще вроде какие-то появились, проверку кода flake8, mypy и особенно ruff, ну и как же без pytest.

одновременное упоминание uWSGI и gunicorn вызывает путаницу

sudo pip install aiogram

Не надо ставить pip'ом в системный python, туда нужно ставить только через apt. А правильно сразу научиться использовать venv, либо поставить юзеру pip install aiogram --user

Далее, в [Service] лучше сразу дописать Restart=always

имя_сервиса_без .service

непонятно зачем это писать, работают оба варианта, этот и имя_сервиса с .service

Если пишешь про ssl_stapling, то напиши и про resolver, который потребуется для его работы.

тоже хорошо, всё больше мест с async, хотя тут вызовы и не в authenticate, а я больше про этот неприятный момент, когда код views синхронный.

А еще в этой схеме мне не нравятся http запросы внутри views к другому серверу. При равномерных логинах проблему можно и не заметить, а вот допустим акция, в систему разом приходят условные 1к пользователей, синхронному фреймворку от этого станет плохо.

не каждый нож холодное оружие

незаконному устройству выдали бы сертификат в РФ?

1
23 ...

Information

Rating
Does not participate
Location
Пермский край, Россия
Registered
Activity