Size: a a a

2021 May 11

АГ

Алексей Герасимов... in Rust Async
Как я понял проблема в том, что spawn требует static футуру, а стрим не статик (может потому что держит не-статик ссылку на соединение conn)
источник

VC

Valeriy Chugreev in Rust Async
Похоже, что так. Жаль, что на sqlx очень простые примеры. Может быть, потом задам вопрос в ишью. Но в принципе рабочее решение есть, пока нормально.
источник

LK

Lev Khoroshansky in Rust Async
Кажется, что функция
trade_streaming
уже не async
источник

VC

Valeriy Chugreev in Rust Async
Почему? Я же просто коннект получаю из пула и передаю туда. С этим что-то не так?
источник

LK

Lev Khoroshansky in Rust Async
trade_streaming
просто возвращает
JoinHandle
, сама никакие асинхронные вещи не делает, поэтому можно убрать
async
из объявления, чтобы компилятору чуть полегче жилось
источник

VC

Valeriy Chugreev in Rust Async
Это только часть решения) Сейчас я пишу второй паралельный стримминг (вычитка других сущностей) + join на оба потока + graceful shutdown в каждый поток, так что она мне нужно как async. Спасибо!
источник

VC

Valeriy Chugreev in Rust Async
P.S. Эта штука в итоге получается сложнее.
источник

VC

Valeriy Chugreev in Rust Async
> Lev Khoroshansky
Что-то типа:

let conn = pool.try_acquire().unwrap();
   let trade_task = trade_streaming(conn, date, sender.clone(), shutdown.clone()).await;

   let conn = pool.try_acquire().unwrap();
   let order_book_task = order_book_streaming(conn, date, sender.clone(), shutdown.clone()).await;

   let _ = tokio::join!(trade_task, order_book_task);
sender - это канал, через которые данные транслируются в другую часть системы (читаем их базы и передаем другому потребителю).
источник

LK

Lev Khoroshansky in Rust Async
Понял, ага; в примере контекст позволял async убрать, поэтому и посоветовал
источник

VC

Valeriy Chugreev in Rust Async
Совсем забыл, функцию я переделал на
tokio::select! {
               val = stream.try_next() => {
(select нужен для того, чтобы shutdow обрабатывать)
источник

VC

Valeriy Chugreev in Rust Async
🤝
источник
2021 May 12

GS

German Swan in Rust Async
Всем привет. Помогите разобраться пожалуйста. Хочу реализовать state паттерн, что бы передавать вызовы функций в стейт. При этом функции должны быть асинхронными, тк они выполняют http запросы. Попробовал async_trait crate, но компилятор все ещё кидает варниг о том, что вызов такой функции (асинхронной в трейте) будет каждый раз выделять память в куче, а это плохая практика тк эти функции будут вызываться постоянно.

Собственно вопрос: как можно организовать код что бы обойти эту проблему и при том не писать тучу boilerplate кода типа match state { impl1.do_async() } для каждой имплементации?
источник

a

antuan in Rust Async
Я делал кмк что-то похожее и обошелся матчем.
https://github.com/aCLr/feeder/blob/3fed9971dc615180558cf1cc232d1c5934e51aae/vk-collector/src/client.rs#L107
В крайнем случае, наверное, можно накорябать макрос. Наверное.
источник
2021 May 13

АГ

Алексей Герасимов... in Rust Async
источник

АМ

Александр Маглеванны... in Rust Async
Судя по тому, что он одновременно вступил во все группы - да)
источник

D

Denis in Rust Async
ща забаним
источник

А

Артем in Rust Async
О, значит своего бота буду заливать по тихой (не в эти чаты и вообще не про программирование)
источник

П

Пух in Rust Async
источник

D

Denis in Rust Async
ну, можно просто скоординироваться с администрацией
источник

А

Артем in Rust Async
Я понимаю. Но запрос от клиента был "Ну это, ёпта, хачу чтоб бот качал посты с других каналов"

Хотя ссылки оставлять будет конечно, но в любом случае как-то стремно с таким обращаться.
источник