在生产中大多数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
答案 0 :(得分:1)
如果您想回复父进程,那么您应该使用handle_call
:
def handle_call(data, from, state) do
case updated do
false -> Process.send_after(from, {:update_retry, ... parent, retries + 1}, 500)
true -> ...
state
end
{:reply, :ok, state}
end