1

ManagerSettingshttp-conduit アプリケーションのすべての要求と応答をログに記録するために、これを作成しました。(ちなみに、私はインポートしていますClassyPrelude)。

tracingManagerSettings :: ManagerSettings
tracingManagerSettings =
  tlsManagerSettings { managerModifyRequest = \req -> do
                         putStr "TRACE: "
                         print req
                         putStrLn ""
                         pure req
                     , managerModifyResponse = \r -> do
                         responseChunks <- brConsume $ responseBody r
                         let fullResponse = mconcat responseChunks
                         putStr "TRACE: RESPONSE: "
                         putStrLn $ decodeUtf8 fullResponse
                         pure $ r { responseBody = pure fullResponse }
                     }

ただし、機能していません。使用すると、アプリケーションがハングし、最初の要求と最初の応答を出力した後、マシン内のすべての RAM を消費しようとします。これは、ある種の無限ループを示唆しています。

また、要求は 2 回出力されます。

私は似たような以前の試みをしましたが、変更しませんでしたr。応答を完全に読み取った後、読み取る応答データがなくなったため、失敗しました。

これを に置き換えるとtlsManagerSettingshttp-conduit再び機能します。

私のアプリケーションは libstackexchange を使用していますが、これをManagerSettingsカスタマイズできるように変更しました。http-conduit バージョン 2.2.4 を使用しています。

問題を診断するにはどうすればよいですか? どうすれば修正できますか?

4

1 に答える 1