背景
我们有一个应用程序,处理相当数量的请求每秒。这个应用程序需要通知外部服务,通过HTTPS向我们的服务器发出一个GET呼叫。
目标
这里的目标是使用HTTPoison来发出异步GET请求。我并不关心请求的响应,我只关心它们是否失败,这样我就可以将任何可能的错误写到记录器中。
如果成功了,我什么也不想做。
研究
我检查了HTTPoison的正式文档,发现它们支持异步请求:
https://hexdocs.pm/httpoison/readme.html#usage
然而,我对这种方法有两个问题:
flush来显示请求已经完成。我无法登录应用程序和手动flush来查看请求的进展情况,这将是疯狂的。所以,我有一个简单的问题:
我假设默认的HTTPoison.get是同步的,如文档所示。
发布于 2019-01-14 11:38:16
这可以通过每个请求产生一个新的过程来实现。考虑这样的事情:
notify = fn response ->
# Any handling logic - write do DB? Send a message to another process?
# Here, I'll just print the result
IO.inspect(response)
end
spawn(fn ->
resp = HTTPoison.get("http://google.com")
notify.(resp)
end) # spawn will not block, so it will attempt to execute next spawn straig away
spawn(fn ->
resp = HTTPoison.get("http://yahoo.com")
notify.(resp)
end) # This will be executed immediately after previoius `spawn`请看一下我在这里指出的spawn/1文档。
希望这能帮上忙!
https://stackoverflow.com/questions/54180329
复制相似问题