这是对这个问题的跟进: 如何同步执行 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)