1

データベース アクセスを 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) ()
4

1 に答える 1