otp相关内容

监督树无法启动

我正在尝试实现此答案中所述的内容,但是我遇到了类似我自己的错误我在编译应用程序时将其包含在下面. **(混合)无法启动应用程序工作程序:Workers.Application.start(:n​​ormal,[])返回错误:关机:无法启动子程序:{Workers.UrlSupervisor,2}**(退出)已经开始:#PID 我不确定我是否天生就在做不允许做的事情,或 ..
发布时间:2021-05-04 18:33:18 其他开发

如何确定Erlang进程(PID)在哪个节点上运行?

鉴于我可以将一个进程的PID发送到另一个节点,甚至可以跨节点发送,如果我从另一个进程(可能在另一个节点上)中的一个进程收到一个PID,我怎么找出有问题的PID在哪个节点上在/上运行? erlang:process_info(Pid)似乎没有该信息. 谢谢. 解决方案 erlang:node/1 node(Arg)->节点 返回Arg所在的节点.Arg可以是pid,引 ..
发布时间:2021-05-01 18:31:44 其他开发

允许主管的孩子利用重新启动功能,但是一旦通过最大重新启动操作,就不杀死主管?

我有一个 simple_one_for_one 主管来管理一组相当不稳定的孩子-他们通常由于外部原因而死亡,例如他们的网络连接被终止。 Erlang的监督系统对此非常出色-只需重新启动它们即可备份,一切都会正常进行。 问题发生在其中一个孩子的连接严重问题时并达到管理员的最大重新启动限制,此时管理员杀死了所有孩子,然后自杀。太好了,这在文档中已指定。但是,我的理想行为是让主管放弃重新启动该特定 ..
发布时间:2020-10-30 19:12:24 其他开发

活动期间,Erlang热代码交换如何工作?

我目前正在使用实时媒体服务器,该服务器将使普通消费者可以向我们发送实时视频。在目前的环境中,我们可以看到几天之内发送给我们的广播,因此在不中断用户的情况下能够修复错误(或添加功能)的想法非常引人注目。 但是在编写代码时,我意识到热代码交换没有任何意义,除非我编写了每个进程,以便所有状态始终在gen_server内部完成,并且gen_server调用的所有外部模块都必须尽可能简单。 让我 ..
发布时间:2020-10-30 19:04:57 其他开发

Erlang / OTP:同步与异步消息传递

首先吸引我到Erlang的一件事是Actor模型; 我刚刚开始涉足OTP,尤其是研究gen_server。我看过的所有示例(当然都是教程类型的示例),都使用 handle_call()而不是 handle_cast()实施模块行为。 我发现这有点令人困惑。据我所知, handle_call 是一个同步操作:调用者被阻塞,直到被调用者完成并返回为止。 我将要启动一个新的OTP应用程 ..
发布时间:2020-10-30 19:02:56 其他开发

Elixir OTP Supervisor检测到崩溃的进程时记录错误

在针对Supervisor的十六进制文档中,有一行指出: 使用此模块实现的主管具有一组标准的接口功能,并包括跟踪和错误报告功能。 不幸的是,我不知道该怎么做。我想要的是当 Supervisor 检测到童工崩溃并正在重新启动时触发的某种挂钩/通知/事件。主要是,我只想记录一个工作者崩溃的事实,以便可以向用户显示此错误,而就我而言,这需要将错误消息写入数据库中的字段。 我想念什么? ..
发布时间:2020-10-28 22:26:04 其他开发

查找Elixir / Erlang内存文件的长度?

在Elixir(或Erlang)中,如果我有一个内存中的文件,如何找到字节的长度? {:ok,fd} =:file.open(“”,[:ram,:read,:write]) :file.write(fd,“ hello”) 解决方案 不确定是否有更好的方法,但这就是我所做的: def get_length(fd)do {:ok,cur} =:file.posit ..
发布时间:2020-10-28 22:21:42 其他开发

无法使用Elixir连接到远程SSH服务器

我一直在尝试用elixir连接到远程ssh服务器。 这是我在IEX中所做的: [Macintosh]长生不老药/ logglycious(master |…)> iex 15-07-20 0:11 Erlang / OTP 17 [erts-6.4] [源代码] [64位] [smp:8:8] [异步线程:10] [hipe] [kernel- Interactive E ..
发布时间:2020-10-28 22:20:30 其他开发

为什么Supervisor.start_child不起作用

我是Elixir的初学者。 我有一个应用程序可以在application.ex中启动一个自定义主管。代码: defmodule MyApp做 使用应用程序 def start(_type,_args)做 进口主管。Spec children = [ 主管(MyApp.Web.Endpoint,[]), 主管(MyApp.Repo,[]), #我的通知者 MyApp ..
发布时间:2020-10-28 22:16:02 其他开发

正确的Elixir OTP方法来构造重复任务

我有一个工作流程,它涉及每30秒左右唤醒一次,并轮询数据库以获取更新,对此采取措施,然后再进入睡眠状态。抛开数据库轮询无法扩展和其他类似的问题,使用主管,工作人员,任务等来构造此工作流的最佳方法是什么? I会列出一些我曾经有过的想法以及我的想法。请帮助我找出最灵丹妙药的方法。 (顺便说一句,我对Elixir还是很陌生。) 1。通过函数调用进行无限循环 只需在其中放置一个简单的递归 ..
发布时间:2020-10-28 22:06:26 其他开发

在elixir应用程序中访问项目版本

我有一个定义版本的Elixir项目。我如何从正在运行的应用程序中访问它。 在mix.exs中 def project do [app::my_app, 版本:“ 0.0.1”] 结束 我想在应用程序中访问此版本号,以便将其添加到返回的消息中。我在环境散列中寻找类似以下内容的 __ ENV __。version #=> 0.0.1 解决方 ..
发布时间:2020-10-28 22:02:57 其他开发

下载最新的二进制文件后,错误`make` erlang

我运行了./configure 我有几个错误,因为没有Java编译器,因此无法构建文档。我认为这没有关系,所以我继续进行 make : 什么是错误4 ? oot @ marble-pyramid-1:〜/ download / otp_src_20.0 #make 依赖 make [1]:输入目录`/root/download/otp_src_20.0/erts/emula ..
发布时间:2020-10-03 22:02:50 服务器开发

何时使用erlang application:start或included_applications和主管?

我有一个Erlang应用程序,它的deps目录中有另一个应用程序. 据我了解,我可以; a)通过调用application:start(some_other_app)从包含的应用程序中启动我的依赖应用程序,该程序将启动应用程序并显示其在Observer中独立运行. b)将我的从属应用程序与{included_applications,[some_other_app]}一起包含在我 ..
发布时间:2020-07-05 19:14:27 其他开发

为什么我们需要simple_one_for_one?

有人告诉我,simple_one_for_one对聊天应用程序非常有用,因为每个聊天客户端都是一个服务器进程(gen_server).这是正确的吗? 我想知道为什么我们需要它吗?为什么不只创建一个中心服务器(gen_server)来处理所有聊天客户端通信?因为也许聊天客户端的数量很大,所以只有一台服务器无法快速处理,这会使系统变慢吗? 我认为也许创建过多的服务器(例如simple_on ..
发布时间:2020-06-13 20:18:42 其他开发

无法从shell产生一个Erlang主管

我已经实现了gen_server和超级用户:test_server和test_sup.我想从shell/CLI中测试它们.我已经编写了它们的start_link函数,以便其名称在本地注册. 我发现我可以从命令行生成test_server很好,但是生成的test_sup根本不允许我与服务器进行交互. 例如,我可以通过执行以下操作来生成test_server: 1> spawn(te ..
发布时间:2020-06-13 20:18:40 其他开发