增加Network.HTTP.conductor的请求超时

增加Network.HTTP.conductor的请求超时,http,haskell,timeout,http-conduit,Http,Haskell,Timeout,Http Conduit,我使用库版本2.0+从HTTP Web服务获取内容: import Network.HTTP.conductor main=do content类似于您不能单独使用simpleHttp。您需要将管理器与httpLbs一起使用才能设置超时 请注意,您不需要在管理器中设置超时,但可以为每个请求单独设置超时 下面是一个完整的示例,其行为类似于上面的函数,但允许您修改超时: import Network.HTTP.conductor 进口管制.Monad(liftM) 将限定数据.ByteString.

我使用库版本2.0+从HTTP Web服务获取内容:

import Network.HTTP.conductor
main=do content类似于您不能单独使用
simpleHttp
。您需要将
管理器
httpLbs
一起使用才能设置超时

请注意,您不需要在管理器中设置超时,但可以为每个请求单独设置超时

下面是一个完整的示例,其行为类似于上面的函数,但允许您修改超时:

import Network.HTTP.conductor
进口管制.Monad(liftM)
将限定数据.ByteString.Lazy.Char8作为LB导入
--|允许指定超时的simpleHttp替代方案
--|请注意,超时参数以微秒为单位!
下载HttpTimeout::Manager->String->Int->IO LB.ByteString

downloadHttpTimeout管理器url timeout=do req我发现以下是Uli的
downloadHttpTimeout
版本,与
simpleHTTP
更为相似:

simpleHTTPWithTimeout::Int->请求a->IO(响应LB.ByteString)
simpleHTTPWithTimeout请求=

do mgr既然您没有自定义管理器,那么您不妨在下载HttpTimeout中自动创建它,这是值得的。@ErikAllik我当然可以,但在我看来,像这样的实用方法最常见的用例是将它集成到更大的应用程序中。到目前为止,我使用HTTP管道编写的每个应用程序都需要一个定制的
Manager
实例,因此我认为与最小实现相比,这里的额外参数是有用的