データベース アクセスを lwt で動作させることができません。スレッドに含めるべきですか?どのように?または、値を返す新しいスレッドを作成し'a lwt
ますか? もしそうなら、その値をどうするか?
同じことが にPrintf.eprintf
も当てはまり、これも lwt によってブロックされているようです。そのため、代わりに Lwt_io を使用します。しかし、なぜ lwt は通常の io をブロックするのでしょうか?
私が持っているのは、のような単純な db リクエストですDb.update session
。関数内にありLwt_main.run main
ます。これはすべて CGI スクリプト内にあります (重要ではありません。データベースへのアクセスは、lwt コマンドで開始するまで問題なく動作します)。
必要に応じて、さらにコードを提供できます。
よろしく
オーレ
編集
let main sock env =
(* code omitted *)
Gamesession.update_game_session env#db game_session_connected;
(* code omitted *)
Lwt_main.run (main sock_listen env)
編集 2
これが解決策でした:
Lwt_preemptive.detach (fun () -> Db.call) ()