Size: a a a

2021 March 01

KR

Kai Ren in Rust Async
Alexander Prokudin
Там каждая джоба внутри шлёт запросы с некоторым concurrency, поэтому если детализированно глянуть, то при запуске двух джобов один отправляет пачку запросов - второй отправляет пачку запросов - первый начинает разгребать ответы и всё, второй так и стоит в локе
А там адреса разные? Может быть такое что сам целевой сервер тротлит?
источник

KR

Kai Ren in Rust Async
Ну там лок PHP-сессии или ещё чего.
источник

AP

Alexander Prokudin in Rust Async
Kai Ren
А там адреса разные? Может быть такое что сам целевой сервер тротлит?
Не, не должно
источник

KR

Kai Ren in Rust Async
Alexander Prokudin
Не, не должно
=/ ... ну по коду подвохов больше не вижу, должно вроде работать. Расскажи потом как раскопаешь причину.

Что касается организации фоновых тасок, то примерно так обычно и делаем. Спавним пулы фоновых потоков и раздаём им задачи через mpmc. +/- хэндлинг паник, супервизор, ленивость, но это всё руками писаные абстракции уже.
источник

KR

Kai Ren in Rust Async
У нас на актикс-вебе прод, фоновые таски самые различные отрабатывает отлично. Никаких проблем с рантаймом не было пока что.
источник

AP

Alexander Prokudin in Rust Async
Kai Ren
=/ ... ну по коду подвохов больше не вижу, должно вроде работать. Расскажи потом как раскопаешь причину.

Что касается организации фоновых тасок, то примерно так обычно и делаем. Спавним пулы фоновых потоков и раздаём им задачи через mpmc. +/- хэндлинг паник, супервизор, ленивость, но это всё руками писаные абстракции уже.
>Спавним пулы фоновых потоков

Как это правильно делать? Есть ощущение, что я неправильно подхожу к вопросу, что просто делаю tokio::spawn несколько раз и они все на одном потоке работают
Склоняюсь уже попробовать поднять второй рантайм токио, только многопоточный, для этих раннеров
источник

AP

Alexander Prokudin in Rust Async
Мне как-то надо, чтобы фоновые раннеры в разных потоках были, чтобы могли параллельно джобы делать
источник

KR

Kai Ren in Rust Async
Alexander Prokudin
>Спавним пулы фоновых потоков

Как это правильно делать? Есть ощущение, что я неправильно подхожу к вопросу, что просто делаю tokio::spawn несколько раз и они все на одном потоке работают
Склоняюсь уже попробовать поднять второй рантайм токио, только многопоточный, для этих раннеров
Делай токио::спавн() в factory-функции, которая передается в App. Она ведь запускается на каждом потоке отдельно (инициализирует сервер-воркера).
источник
2021 March 02

K

Kitsu in Rust Async
А есть какие-нибудь практики по дедупликации логики в синк и асинк версиях кода? Условно есть функция с вызовом некоторых блокирующих функций и аналогичная асинк-функция, как лучше сделать логику общей? inb4: remove sync
источник

ph

pl 🦑 hk in Rust Async
block_on :trollface.jpg:
источник

K

Kitsu in Rust Async
вот пример навскидку: https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=306b51638ca50a46ec267a1293b1a7eb

прям совсем одно и то же, различие только в импортах да await-е
источник

MB

Mikail Bagishov in Rust Async
Если ночник, то монады можно наверное :)
источник

MB

Mikail Bagishov in Rust Async
Но там наверное столько бойлерплейта выйдет, что проще block_on делать
источник

K

Kitsu in Rust Async
Любопытная мысль, спасибо, поиграюсь. Найтли конечно нет, но вдруг доживем до момента стабилизации
источник

e🦀

eupn 🦀 in Rust Async
Kitsu
А есть какие-нибудь практики по дедупликации логики в синк и асинк версиях кода? Условно есть функция с вызовом некоторых блокирующих функций и аналогичная асинк-функция, как лучше сделать логику общей? inb4: remove sync
Видел делали через макрос maybe_await!() который в зависимости от включённой фичи добавлял .await
источник

e🦀

eupn 🦀 in Rust Async
Вроде в репе bitcoindevkit (BDK)
источник

K

Kitsu in Rust Async
источник

(L

(((Mike Lubinets))) in Rust Async
Печальненько
источник
2021 March 03

DF

Dollar Føølish in Rust Async
Если речь о чистой логике ее можно написать в стиле sans io, тогда не будет зависимости от асинков вообще
источник

DF

Dollar Føølish in Rust Async
Если речь о логике ввода вывода то тогда оптимально будет монады
источник