Объясните мне, чего все питонщики по асинхронности так страдают ? Вот смотришь код, он весь на async/await написан. А начинаешь разбираться, так на выходе синхронная логика получается, когда один фиг функция ждет результата другой функции, так как сама использует ее значение.
С тем же fastapi вообще дурдом, народ постоянно ее с джангой сравнивает. Хотя первое - это rest сервис, а вторая - комбайн по управлению модельками со встроенной админкой.
Асинхронность с умом надо применять, вот почитай тему про страдания с мариадб. Мало толку если ты ждешь на фронте результат. А вот если отправил и забыл, как только данные обработались, тебе уведомление пришло, например. Но в целом там посерьезнее задачи.
Фастапи и джанга разные вещи, сложно их соавнивать, но в целом тенденция идет к переписыванию монолитов на джанге на микросервисы на всяких фастапи
Гуляли по городу сегодня, набрели на отличное заведение - Pizzatopia - пицца на тесте по оригинальному итальянскому рецепту, нежное, мягкое, а начинку сам себе выбираешь, что угодно в ассортименте, сыры, хамон, чоризо цена фиксированая, 36 злотых, тут же притебе готовят и в печку, выпекается пару минут. Очень вкусная, вдвоем еле сьели))
LEOnidUKG#: Если выполняется 1 запрос, значит будет использоваться 1 ядро т.к. это 1 задача. Если запустите второй запрос, то подключиться второе ядро.
Это точно? Есть ссылка на почитать? Насколько я знаю, мускля прекрасно умеет в потоки, а поток != процесс(ядро) Собственно это слишком расточительно - запускать процесс для каждого реквеста. Поэтому для каждого запроса создается свой поток в рамках одного процесса, которые падают в очередь. Но Мускля умеет и в многоядерность, но как именно она решает что пора взять второе ядро, я не знаю. Вопрос к знатокам, было бы интересно понять.
htexture#: Или они в очередь после моего одного тяжелого запроса становятся? Ведь по сути, сайт в этот момент лежит.
Именно так, только он не лежит, а выполняет другие задачи, а ваш поток просто залочен. Обычно это разруливается с помощью мьютексов, семафоров.
htexture#: Лежит, потому-что не может получить ответ от базы. Возвращаемся к вопросу, как включить мультизадачность, мультипоточность)
Написать приложение так, чтобы оно умело в многозадачность). Или как минимум устранить deadlock. Но это не самая простая тема. Для начала я бы сделал профайлинг для всех запросов, если там все тоскливо - идем в EXPLAIN и смотрим что происходит. Ну и уже от этого пляшем
Сколько интересуюсь темой, php это не совсем честная асинхронка, и в целом сообщество к этому не готово но идет довольно давно это не в новинку для php просто надо понимать что большая часть драйверов i/o блокирующая, например для работы с бд нативно умеет только расширение mysqli через конекшен пулл, начнем спрашивать php'шников кто об этом знает, окажется что 90% не знает. У php отличная spl нигде практически её не встречаю, есть клевое расширение со структурами и тоже нигде не встречаешь, на php можно кодить очень клево и очень клевые вещи, просто это никому особо не надо =)) Когда php программист дорастает до этого уровня он начинает интересоваться другими ЯП =))
Ну в питоне тоже приходится использовать специальные расширения для той же базы, если хочется асинхронности, да и GIL никто не отменял, хоть многим и хочется. Но в целом практически без асинхронки в питоне не идут уже вперед.
Поддерживаю, actions прекрасно автоматизируют такое без дженкинса и настраиваются за 10 минут. Вешаешь например обработку на пулл в мастера и будет тебе счастье
Я же вроде много ссылок давал =)) https://searchengines.guru/ru/forum/1074587/page2#comment_16879192
там библиотеки асинхронности.
Да, но мне интересны были именно фв, которые заточены под асинхронку, в питоне начиная кажется с 3.4 завезли asyncio, а фреймворки появились позже. Теоретически то и в старую джангу можно было либу вкинуть, но тот же фастапи изначально заточен под асинхроннное выполнение. Спасибо что не даете теме уйти в сторону) мне например это интересно вполне.
Всегда считал, что многоядерность(мультипроцессинг) нужно использовать на бэкенде, мускля умеет сама разруливать реквесты и разбрасывать по ядрам транзакции, например? Было бы интересно узнать подробности реализации, разберетесь в чем проблема - расскажите. База поднята в отдельной ноде и вы можете смотреть нагрузку именно по обращениям к ней?
Объясните мне, чего все питонщики по асинхронности так страдают ? Вот смотришь код, он весь на async/await написан. А начинаешь разбираться, так на выходе синхронная логика получается, когда один фиг функция ждет результата другой функции, так как сама использует ее значение.
С тем же fastapi вообще дурдом, народ постоянно ее с джангой сравнивает. Хотя первое - это rest сервис, а вторая - комбайн по управлению модельками со встроенной админкой.
Асинхронность с умом надо применять, вот почитай тему про страдания с мариадб. Мало толку если ты ждешь на фронте результат. А вот если отправил и забыл, как только данные обработались, тебе уведомление пришло, например. Но в целом там посерьезнее задачи.
Фастапи и джанга разные вещи, сложно их соавнивать, но в целом тенденция идет к переписыванию монолитов на джанге на микросервисы на всяких фастапи
Если выполняется 1 запрос, значит будет использоваться 1 ядро т.к. это 1 задача. Если запустите второй запрос, то подключиться второе ядро.
Это точно? Есть ссылка на почитать? Насколько я знаю, мускля прекрасно умеет в потоки, а поток != процесс(ядро) Собственно это слишком расточительно - запускать процесс для каждого реквеста. Поэтому для каждого запроса создается свой поток в рамках одного процесса, которые падают в очередь. Но Мускля умеет и в многоядерность, но как именно она решает что пора взять второе ядро, я не знаю. Вопрос к знатокам, было бы интересно понять.
Или они в очередь после моего одного тяжелого запроса становятся? Ведь по сути, сайт в этот момент лежит.
Именно так, только он не лежит, а выполняет другие задачи, а ваш поток просто залочен. Обычно это разруливается с помощью мьютексов, семафоров.
Лежит, потому-что не может получить ответ от базы. Возвращаемся к вопросу, как включить мультизадачность, мультипоточность)
Написать приложение так, чтобы оно умело в многозадачность). Или как минимум устранить deadlock. Но это не самая простая тема. Для начала я бы сделал профайлинг для всех запросов, если там все тоскливо - идем в EXPLAIN и смотрим что происходит. Ну и уже от этого пляшем
Сколько интересуюсь темой, php это не совсем честная асинхронка, и в целом сообщество к этому не готово но идет довольно давно это не в новинку для php просто надо понимать что большая часть драйверов i/o блокирующая, например для работы с бд нативно умеет только расширение mysqli через конекшен пулл, начнем спрашивать php'шников кто об этом знает, окажется что 90% не знает. У php отличная spl нигде практически её не встречаю, есть клевое расширение со структурами и тоже нигде не встречаешь, на php можно кодить очень клево и очень клевые вещи, просто это никому особо не надо =)) Когда php программист дорастает до этого уровня он начинает интересоваться другими ЯП =))
Ну в питоне тоже приходится использовать специальные расширения для той же базы, если хочется асинхронности, да и GIL никто не отменял, хоть многим и хочется. Но в целом практически без асинхронки в питоне не идут уже вперед.
Там грубо говоря всё просто, 1 запрос 1 поток. Внутри него нет разделения.
Потоки исполняются на одном ядре вроде же, процессы используют разные
Я же вроде много ссылок давал =)) https://searchengines.guru/ru/forum/1074587/page2#comment_16879192
там библиотеки асинхронности.
Да, но мне интересны были именно фв, которые заточены под асинхронку, в питоне начиная кажется с 3.4 завезли asyncio, а фреймворки появились позже. Теоретически то и в старую джангу можно было либу вкинуть, но тот же фастапи изначально заточен под асинхроннное выполнение. Спасибо что не даете теме уйти в сторону) мне например это интересно вполне.