Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir 调度员可以访问它吗';s的父生产者方法/属性?_Elixir_Genstage - Fatal编程技术网

Elixir 调度员可以访问它吗';s的父生产者方法/属性?

Elixir 调度员可以访问它吗';s的父生产者方法/属性?,elixir,genstage,Elixir,Genstage,使用@behavior GenStage.dispatcher创建的自定义dispatcher能否访问其父模块,该父模块以{:producer,state,dispatcher:CustomDispatcher}的身份调用他 我意识到调度程序是在与生产者相同的过程中启动的 例如,如果我尝试从调度员向制作人发起一个handle\u呼叫,那么我将收到: GenStage.call(producer, :test) ** (exit) exited in: Gen

使用
@behavior GenStage.dispatcher
创建的自定义dispatcher能否访问其父模块,该父模块以
{:producer,state,dispatcher:CustomDispatcher}
的身份调用他

我意识到调度程序是在与生产者相同的过程中启动的

例如,如果我尝试从调度员向制作人发起一个
handle\u呼叫
,那么我将收到:

GenStage.call(producer, :test)                   
** (exit) exited in: GenServer.call(#PID<0.1575.0>, :test, 5000)
    ** (EXIT) process attempted to call itself
    (elixir) lib/gen_server.ex:917: GenServer.call/3
GenStage.call(生产者:测试)
**(退出)退出:GenServer.call(#PID,:test,5000)
**(退出)进程试图调用自身
(elixir)lib/gen_server.ex:917:GenServer.call/3
有了这个错误,还有其他明显的方法可以访问生产者的方法吗


我知道您可以使用参数初始化dispatcher,但我想访问producer方法/状态,因为它们是通过producer回调修改的

如果您只有一个producer,请声明标准接口(如
def foo,do:GenServer.call(\uuu MODULE\uu,:foo)
)当尝试MyProducer.foo时,它与调度程序中的相同:*(退出)退出:GenServer.call(MyProducer,:foo,5000)**(退出)进程试图调用它自己的
handle\u info
,应该允许它。一般来说,如果您发现自己需要从调度程序中呼叫制作人,则设计有问题。它必须是抽象的。嗯,我正在考虑使用其他东西,你知道:ets是否可以在节点之间共享?不,不是<代码>记忆状态为。