Как синхронно выполнить поток Lwt - PullRequest
0 голосов
/ 22 марта 2020

Есть ли способ синхронно выполнить поток, созданный с помощью библиотеки Lwt?

Чтобы указать c, я пытаюсь выполнить серию почтовых запросов на сервер, который вычисляет некоторое значение и возвращает результат.

На основании ответов на этот вопрос:

Как мне сделать простой запрос GET в OCaml?

Я могу сделать это либо с низким подход уровня (сокеты) или использование библиотеки Cohttp. Преимущество низкоуровневого подхода состоит в том, что он является непосредственным и простым, но я бы предпочел придерживаться Cohttp (нет необходимости в чтении / записи l oop et c.). К сожалению, я совершенно новичок в Lwt и на основании: https://mirage.io/wiki/tutorial-lwt Я понимаю, что единственный способ получить результат от a t до a - это запустить Lwt_main.run, который предполагается вызвать на верхнем уровне, который не подходит для меня.

TL: DR

Есть ли способ получить результат из:

Client.get (Uri.of_string "http://localhost:8080/res")

без вызова Lwt_main.run или вызов Lwt_main.run для каждого запроса (в глубине кода) не так уж плохая идея?

1 Ответ

1 голос
/ 22 марта 2020

Вы можете вызвать Lwt_main.run глубоко внутри программы, при условии, что вызов не вложен во внешний вызов Lwt_main.run. Похоже, он не будет вложенным в вашем случае, поэтому вы можете позвонить туда, где делаете запрос.

...