error-handling - 设置 gen_server 类型应用程序的状态

标签 error-handling erlang monitor gen-server

我试图找出是否可以启动具有给定状态的 gen_server。

我希望能够设置一个监视器/主管,当此服务器崩溃时,它会以其最后一个有效状态重新启动服务器。

任何关于如何解决这个问题的建议都将非常受欢迎。

到目前为止,我唯一的想法是有一个特殊的 handle_call/3 在调用时将服务器状态更改为所需的状态,但我想避免修改服务器模块并尽可能从我的监视器/主管进程中处理这个。

感谢您的时间。

最佳答案

gen_server:init 接受参数 Args。您可以传递您想要的任何状态并将其设置为服务器的状态。您可以将 Args 传递给 start_link,它会为您传递给 init。

http://www.erlang.org/doc/man/gen_server.html#Module:init-1

http://www.erlang.org/doc/man/gen_server.html#start_link-3

我认为在您的情况下,您可能希望将状态存储在 mnesia 中。这样您就不必将最后一个有效状态传递给 gen_server。如果您不想启动 mnesia,可以使用 ETS。在某个不会死的进程中创建公共(public) ETS 并从您的 gen_server 使用它(请注意,当创建 ets 的服务器死时,ets 被销毁)

http://www.erlang.org/doc/man/ets.html

http://www.erlang.org/doc/man/mnesia.html

关于error-handling - 设置 gen_server 类型应用程序的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9767127/

相关文章:

linux - 如何获取特定进程的 SMP 信息(在哪个核心上运行)

linux - 监视 linux 上的系统(内核)负载

php - 如何让网站可监控?

http - 如何在不存在的主机上捕获 node.js http 错误?

sql-server - SSIS 2005 OnError处理程序

erlang - 如何不对 Rebar3 eunit 测试进行符号链接(symbolic link) priv 目录?

.net - 如何在Windows容器中使用dotnet监视器收集应用程序指标

node.js - 处理 node.js 中的操作错误

error-handling - Firestore每秒1写入限制错误(关闭)

shell - 你如何处理令人分心的 shell tty 输出?