21得票1回答
对于“无限”重复任务,我应该使用哪种OTP行为?

我希望在Phoenix应用程序中反复运行相同的操作序列,而不会在工作进程中发生任何故障时使整个Web应用程序崩溃,但我真的不知道是否应该使用GenServer、Elixir的Tasks、代理或者其他一些我还没有想到的东西。 当我启动我的Phoenix应用程序时,一个工作进程也应该启动,定期从...

19得票6回答
Erlang lists:index_of/2函数是什么?

我正在寻找一个Erlang库函数,可以返回列表中特定元素的索引。 因此,如果:X = [10,30,50,70] lists:index_of(30, X) 会返回1,等等。就像java.util.List的indexOf()方法一样。 在Erlang标准库中是否存在这样的方法?我尝试在lis...

19得票3回答
为什么大公司使用Mnesia而不是Riak或CouchDB?

我发现像Klarna和Whatsapp这样的两个大公司正在使用Mnesia作为他们的内存数据库(不确定他们如何使用Mnesia进行持久化,因为其有2GB的限制)。我的问题是:为什么像这些公司一样,甚至可能还有其他我不知道的公司,使用Mnesia而不是Riak或CouchDB?这两个都是Erla...

18得票4回答
Erlang/OTP:同步与异步消息传递

我最初被Erlang吸引的一点是Actor模型:不同进程通过异步消息交互并发运行。 我刚开始学习OTP,特别是研究gen_server。所有我看到过的例子都使用handle_call()而不是handle_cast()来实现模块行为,虽然这些例子都属于教程类型。 我觉得有点困惑。据我所知,...

18得票2回答
Erlang/OTP生产应用部署介绍

我希望在VPS上开发和部署一个Erlang/OTP应用程序。 我对在本地机器上开发Erlang代码非常熟悉,我的问题是关于部署的。 基本上,我想知道为了将Erlang代码从本地机器移动到生产服务器并使其运行(即可供用户使用),我应该采取哪些步骤。 注意:我已经阅读了一些关于Erlang和...

17得票4回答
并发:进程 vs 线程

使用基于进程的并发模型相比基于线程的模型有哪些主要优势,后者在什么情况下是适当的?

17得票1回答
Elixir - 获取监管进程下所有进程的PID

我有一个Supervisor,想要知道在任何时间运行在该Supervisor下的所有进程。似乎应该有一种简单的方法来获取在Supervisor或节点下的所有进程的所有PID、名称等信息,但我找不到任何东西。 有什么建议可以做到这一点吗?

16得票5回答
适当的Elixir OTP方式来构建定期任务

我有一个工作流程,需要每隔30秒钟唤醒一次并轮询数据库获取更新,然后执行相应的操作,再回到睡眠状态。暂且不考虑数据库轮询不可扩展等类似问题,使用监管器、工作者、任务等方法,最佳的工作流程结构是什么? 我列出了几个想法以及我的优缺点分析,请帮助我找出最符合Elixir理念的方法。(顺便说一下,...

16得票2回答
在Elixir/Erlang中,`Node.connect`使用哪个端口?

可以使用iex来初始化一个Elixir节点: iex --sname node1@10.99.1.50 --cookie foo 然后另一个人可以使用REPL连接此节点: Node.connect(:"node1@10.99.1.50") 看起来连接是通过 TCP 协议完成的。然而...

16得票4回答
在GenServer.start_link/3中使用{:via, module, term}注册名称的好处是什么?

在 GenServer.start_link/3 中,我可以像这样使用原子名称本地注册一个进程: defmodule Worker do use GenServer def start_link do GenServer.start_link(__MODULE__, nil...