Как использовать Lwt_pool
Я хочу иметь пул соединений с базой данных Redis с максимальным количеством соединений. Это выглядит как Lwt_pool
это решение, которое я ищу, но я не совсем понимаю, как оно должно работать. Например, у меня есть несколько вопросов:
Документы говорят о
Lwt_pool
замечательно использовать повторно открытые соединения, но как пул узнает, какие соединения доступны для повторного использования? Насколько я вижу, нет особого способа сообщить об этом, а API предоставляет толькоuse
метод.Есть ли ресурс лучше, чем
Lwt
документы, чтобы узнать, как это работает? Я не могу легко найти примеры кода или много доступных ресурсов об этом.
1 ответ
Функция, которую вы передаете
use
возвращает поток Когда поток завершается, соединение освобождается обратно в пул.Исходный код довольно легко читается. В этом случае:
let use p f = acquire p >>= fun c -> Lwt.catch (fun () -> let t = f c in t >>= fun _ -> release p c; t) (fun e -> checked_release p c; Lwt.fail e)