【发布时间】:2016-10-10 13:39:25
【问题描述】:
在生产中的大多数 handlecast 和 handleinfo 函数上使用 parent_pid 参数是否被认为是不好的做法?
我是这样测试的:
parent = self()
GenServer.cast(UserServer.via_tuple(user.id), {:update_direct, parent})
assert_receive :updating_failed, 2000
然后是 genserver(带有简单的重试模拟):
def handle_cast(..... parent) do
case updated do
false -> Process.send_after(self(), {:update_retry, ... parent, retries + 1}, 500)
true -> ...
state
end
end
最后在handle_info :update_retry 中,我将消息发送回等待测试(父级):
send parent, :updating_failed
【问题讨论】:
-
我不是 100% 确定您想要实现什么,以及为什么。同时,发送一个 pid(无论它是否是父进程)来回复对我来说是合法的。
标签: elixir