7得票2回答
无监督的gen_server在接收到退出信号时不会调用terminate函数。

gen_server的Module:terminate回调文档中说: 即使gen_server进程不是监督树的一部分,如果它从其父进程接收到一个'EXIT'消息,也会调用此函数。原因与'EXIT'消息中的相同。 这是我的handle_info和terminate函数: handle_...

21得票1回答
在开发Erlang(和Riak)应用程序时的良好实践是什么?

我们正在学习Erlang/OTP和Riak(Core、KV、Pipe等),尝试构建一个开源的分布式应用程序。我们的项目将有很多依赖项:像erlang_js,protobuffs等工具,还有我们需要运行的服务,比如Riak KV。 在Python/Ruby/Node.js中,如果模块放置在与您...

15得票5回答
在init中向self()发送消息是否有害?

在这个例子中,作者在gen_server的init函数中通过以下代码避免了死锁情况: self() ! {start_worker_supervisor, Sup, MFA} 我在我的一个项目中也做了类似的事情,但被告知这种方法不被看好,最好是引起立即超时。什么是可接受的模式?

21得票1回答
如何在Elixir中生成HMAC字符串?

我正在尝试使用Elixir编写亚马逊产品广告API客户端。开发者指南描述了签署API请求的过程,其中必须使用请求和“秘密访问密钥”创建HMAC-SHA26哈希。这是我编写的处理签署请求的函数:defp sign_request(url) do url_parts = URI.parse(u...

8得票1回答
防止DynamicSupervisor在子进程达到max_restarts时关闭

我有一个使用restart: :transient启动子进程的DynamicSupervisor。默认情况下,如果子进程异常退出,它将由监管者重启。 但是,按照设计,如果子进程在3次重启后仍然失败,则监管者本身将退出。根据文档: https://hexdocs.pm/elixir/Supe...

9得票4回答
Erlang 工作流程

你如何组织你的erlang工作流程?我正在学习一些Erlang,我正在使用Rebar,在每次编辑后重新编译、重建和重新启动一个完整的版本(我试图保持OTP的风格)。我相信有更聪明的方法来做到这一点。

9得票2回答
Erlang监督者重启间隔

我有一个使用one_for_one重启策略的监管进程。 是否可以在子进程重新启动之间设置一些时间间隔呢? 例如,远程数据库崩溃了,我想在重新连接之间等待10秒钟。

7得票2回答
作为Erlang版本的一部分,CouchDB是什么?

我想要构建并部署一个应用程序,该应用程序具有Django作为前端,YAWS(appmods)或Mochiweb / Webmachine作为后端,以及CouchDB作为数据存储。此外,我计划广泛使用CouchDB的复制功能,以提供整个应用程序的高容错性。 我倾向于认为,为了实现这一点,我必须...

7得票2回答
erlang:send_after/3和timer:send_after/3的行为意图不同吗?

我想在延迟后向一个进程发送信息,于是发现了erlang:send_after/4。 当查看文档时,它看起来正是我所需要的: erlang:send_after(Time, Dest, Msg, Options) -> TimerRef 启动一个定时器。当定时器到期时,将会发送消息M...

10得票3回答
我该如何在我的Elixir应用程序中找到工作进程?

在 开始学习 的教程中,我正在处理监督器和应用程序部分,为底部的监控树问题编写单元测试。我尝试启动顶级监督器,但出现以下错误: 1) test all buckets die if registry dies (KV.SupervisorTest) test/kv/supervis...