Appels bloquants dans du code asynchrone #5

Open
opened 2020-12-09 01:11:13 +01:00 by librelois · 0 comments

Je vois que tu requete sled en contexte asynchrone, il ne faut pas faire ça.
Les requetes sled en lecture sont bloquantes, or il ne faut jamais faire d'appel bloquant en contexte async : ça bloque tout le thread qui ne peut alors pas exécuter d'autres taches async pendant ce temps...

Lire à ce sujet :

https://github.com/spacejam/sled/issues/1123#issuecomment-657431867

Pour résoudre ce problème tu peut utiliser tokio::task::spawn_blocking

Je vois aussi que tu place ta struct Dbs dans un Arc, ce qui ne sert à rien car sled utilise déjà Arc en interne. Tu peut directement derive Clone à ta struct Dbs ;)

Je vois que tu requete sled en contexte asynchrone, il ne faut pas faire ça. Les requetes sled en lecture sont bloquantes, or il ne faut jamais faire d'appel bloquant en contexte async : ça bloque tout le thread qui ne peut alors pas exécuter d'autres taches async pendant ce temps... Lire à ce sujet : https://github.com/spacejam/sled/issues/1123#issuecomment-657431867 Pour résoudre ce problème tu peut utiliser [tokio::task::spawn_blocking]( https://docs.rs/tokio/0.3.5/tokio/task/fn.spawn_blocking.html) Je vois aussi que tu place ta struct Dbs dans un Arc, ce qui ne sert à rien car sled utilise déjà Arc en interne. Tu peut directement derive Clone à ta struct Dbs ;)
Sign in to join this conversation.
No Label
No Milestone
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: tuxmain/gmarche-rs#5
No description provided.