首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用HTTPoison发出异步请求?

如何使用HTTPoison发出异步请求?
EN

Stack Overflow用户
提问于 2019-01-14 11:08:45
回答 1查看 563关注 0票数 0

背景

我们有一个应用程序,处理相当数量的请求每秒。这个应用程序需要通知外部服务,通过HTTPS向我们的服务器发出一个GET呼叫。

目标

这里的目标是使用HTTPoison来发出异步GET请求。我并不关心请求的响应,我只关心它们是否失败,这样我就可以将任何可能的错误写到记录器中。

如果成功了,我什么也不想做。

研究

我检查了HTTPoison的正式文档,发现它们支持异步请求:

https://hexdocs.pm/httpoison/readme.html#usage

然而,我对这种方法有两个问题:

  1. 他们使用flush来显示请求已经完成。我无法登录应用程序和手动flush来查看请求的进展情况,这将是疯狂的。
  2. 当我们得到响应或错误时,它们不显示任何通知机制。

所以,我有一个简单的问题:

  1. 如何异步通知我的请求失败或成功?

我假设默认的HTTPoison.get是同步的,如文档所示。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-14 11:38:16

这可以通过每个请求产生一个新的过程来实现。考虑这样的事情:

代码语言:javascript
复制
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文档。

希望这能帮上忙!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54180329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档