self) {
println!("> Dropping databases {:?}", self.databases);
let databases = self.databases.clone();
let handle = Handle::current();
handle.block_on(async move {
for name in databases {
self.teardown_database(&name).await.unwrap()
}
});
}
}
можно что-то рабочее собразить? Сейчас в панику падает: “Cannot start a runtime from within a runtime. This happens because a function (like `block_on`) attempted to block the current thread while the thread is being used to drive asynchronous tasks.”
Была идея в тестах создавать DbHelper, который бы генерил базу, накатывал миграции и давал соединения для запросов, а при дропе за собой дропал базы
Ты можешь посмотреть у, например, sqlx, как реализован дроп соединений/пулов
смотрел, они куда-то в очередь складывают и выполняют при следующем асинхронном вызове
handle.spawn_blocking()
но внутри него синхронный код только можно запускать спавнить еще один рантайм?
Обсуждают сегодня