在控制器中保持状态?

时间:2016-10-06 10:28:37

标签: elixir phoenix-framework

我愿意为cassandra db使用客户端,所以我需要将其初始化为:

client = CQEx.Client.new!

我创建了两条路径,读写指向控制器中的动作。

问题是,我如何只对客户端进行一次初始化,并且每次都在控制器的操作中使用它?

我应该创建一个GenServer并从控制器操作向它发送消息吗?这样我就可以在GenServer中维护cassandra客户端了吗?

我每次执行动作时都要创建客户端吗?!

这里的建议是什么?

1 个答案:

答案 0 :(得分:1)

我不得不再挖掘一些,但看起来CQEx.Client.new!实际上并没有初始化客户端,而且有点误导。

实现https://github.com/matehat/cqex/blob/master/lib/cqex/client.ex#L7显示它在内部调用:cqerl.get_client(),如果您查看cqerl库,它会产生连接的主管,因此可能没有必要处理并发并且可以安全地使用get_client并且可以正常工作。