Это продолжение этого вопроса: Как синхронно выполнить поток Lwt
Я пытаюсь запустить следующий фрагмент кода:
open Lwt
open Cohttp_lwt_unix
let server_content2 x =
"in server content x" |> print_endline ;
Client.get (Uri.of_string ("http://localhost:8080/"^x)) >>= fun (_, body) ->
(Cohttp_lwt.Body.to_string body) >|= fun sc -> sc
;;
let reyolo () =
List.init 10 (fun i -> server_content2 (string_of_int i) ) ;;
let par () =
let yolo = reyolo () in
"in par" |> print_endline;
Parmap.pariter
~ncores:4
(fun p -> "before run" |> print_endline ; "content:"^(Lwt_main.run p) |> print_endline ; "after run" |> print_endline )
(Parmap.L yolo);;
par ()
Я ожидал, что это выполнит 10 удаленных подключений. То, что я получаю, находится в par функция Lwt_main.run
, кажется, застряла перед выполнением фактического удаленного вызова.
Я сомневаюсь, что это могло бы иметь какое-либо значение, но сервер, который предполагает отвечать, сделан в python и выглядит так:
import subprocess
from bottle import run, post, request, response, get, route
@route('/<path>',method = 'GET')
def process(path):
print(path)
return "yolo"
run(host='localhost', port=8080, debug=True)