Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >无法使用GenServer运行初始化方法

无法使用GenServer运行初始化方法
EN

Stack Overflow用户
提问于 2017-12-29 07:00:55
回答 1查看 102关注 0票数 0

我刚接触elixir,最近发现GenServer是管理客户机/服务器应用程序接口的好方法。因此,我尝试创建一个GenServer模块来管理数据库连接,但失败了。下面是我的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
defmodule RedisClient do
  use GenServer
  require Logger

  # Client
  def start(url) do
    GenServer.start(__MODULE__, {url})
  end

  def init({url}) do
    Logger.info("connect to url #{url}");
    case Redix.start_link(url) do
        {:ok, conn} -> {conn}
        {:error, err} -> {:error, err}
    end
  end

end

模块RedisClient用于在其init()方法中连接到redis数据库。但它返回以下错误:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
iex(tbc@192-168-1-7)15> RedisClient.start("redis://localhost")
{:error, {:bad_return_value, {#PID<0.6623.0>}}}
iex(tbc@192-168-1-7)16> 
17:58:20.592 [info]  connect to url redis://localhost

nil

我不明白为什么它会返回一个错误,为什么它会在最后打印nil。如果我直接调用Redis,它可以正常工作,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
iex(tbc@192-168-1-7)17> Redix.start_link("redis://localhost")
{:ok, #PID<0.7443.0>}

看起来Redix上的API调用没有问题,那么我的GenServer实现有什么问题呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-29 07:38:42

如果成功,您需要从init/1返回{:ok, state}

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{:ok, conn} -> {:ok, conn}

或者,由于您返回的正是Redix.start_link返回的内容,因此您可以简单地返回它:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def init({url}) do
  Logger.info("connect to url #{url}");
  Redix.start_link(url)
end
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48018779

复制
相关文章
宝塔安装Redis无法运行的解决方法
首先说明一下,Redis安装后无法运行的原因有多种,这里只是其中一种情况。以前还遇到过一此安装后无法运行的情况是缺少某个gcc包。不过那次忘记记录了,现在想不起细节了。
用户2135432
2023/10/21
7080
IDEA无法使用Spring Initializr进行初始化解决
最近在学习SpringBoot,当我在使用Spring Initializr 从spring.io下载初始化项目的时候,出现下面的报错,我把系统代理开全局和规则都试了,还是无法从IDEA里面连接上spring.io,但我在浏览器里可以直接进,按照报错提示解决了,解决方案如下。
Aomsir
2022/12/06
1.5K0
IDEA无法使用Spring Initializr进行初始化解决
python无法使用click方法的替换方法
在python使用selenium作自动登陆某银行网站时,发现click方法无法使用。 如果使用了click,该网站登陆后,无法访问其他菜单。 我不知道他是如何监测到的,上网查了一下相关资料。 替换方法如下: pageUtil.getElementByXPath(tokenImg, pageObj).send_keys(Keys.ENTER) 意思是对着webelement控件,作回车操作
星痕
2020/11/24
1.2K0
pycharm无法运行问题[通俗易懂]
解决方法 一、在右上角点击configure Pycharm interpreters
全栈程序员站长
2022/09/27
2.4K0
pycharm无法运行问题[通俗易懂]
win7运行sqlplus报错“SP2-1503: 无法初始化 Oracle 调用界面”
WIN7 64bit安装Oracle 10.2.0.1后,运行cmd-sqlplus / as sysdba会提示:
bisal
2019/01/29
1.4K0
eclipse500错误原因解决方法_eclipse运行无法显示网页
eclipse内部浏览器报错:此错误(HTTP 500 内部服务器错误)意味着您正在访问的网站出现了服务器问题,此问题阻止了该网页的显示
全栈程序员站长
2022/09/22
3.3K0
eclipse500错误原因解决方法_eclipse运行无法显示网页
hive-jdbc安装后项目无法运行的解决方法
码客说
2023/08/10
4710
idea右键没有run选项,无法运行main方法及启动springboot工程
在idea中有的时候会从外部导入项目,导入成功后打开某个类,需要运行里面的main方法.按如常操作单击右键发现没有run选项。
全栈程序员站长
2022/08/23
5.5K0
idea右键没有run选项,无法运行main方法及启动springboot工程
Xavier 初始化方法
在 Xavier Init 提出前,一般用 unsupervised pre-trainning 和 greedy layer-wise procedure 来训练神经网络。
刘笑江
2019/12/30
1.1K0
Xavier 初始化方法
vector初始化方法_vector初始化大小
vector类为内置数组提供了一种替代表示,与string类一样 vector 类是随标准 C++引入的标准库的一部分 ,为了使用vector 我们必须包含相关的头文件 :
全栈程序员站长
2022/10/02
2.2K0
主机出现dev/sda3 磁盘使用100%,导致myql无法运行
今天鸟云主机有个兄弟说是莫名其妙数据库没了,回去后查看了已经100多天没有重启了,重启了但是那兄弟依旧说没法弄,后台面板也是报错,提示空间不足.
Power
2023/05/31
1.6K0
从gitlab下载下来的maven无法运行,老报404解决方法
1:由于在不同的地方开发同一个项目,就将项目上传到gitlab上面(可以创建私有项目,免费的),回到住的地方,项目下载下来老报错,自己摸索的,记录一下。自己记得把jdk啥的,maven依赖加一下。不然
别先生
2018/04/02
1.2K0
从gitlab下载下来的maven无法运行,老报404解决方法
程序无法运行:Error Default activity not found
前几天用Androidstudio写了一个程序,一直可以运行,可是今天突然无法运行,出现如下情况:
fanfan
2022/05/07
8490
程序无法运行:Error Default activity not found
无法初始化 sqlcmd 库,错误编号为 -2147467259
进行脚本测试: 可见在sp_send_dbmail下面的@query是无法使用临时表的。 只有在@query里面写实际的SQL才可以。不能带临时表。 正确写法: Select b.* From AAA a inner join AZX b on a.CompanyID=b.CompanyID and a.BillNo=b.BillNo Where b.Status=”6”’
全栈程序员站长
2022/09/13
7640
无法初始化 sqlcmd 库,错误编号为 -2147467259
idea 使用 lombok无法获取到get方法 的坑
如果经过如上设值还不行,就先进行clean,再进行编译,生存class文件,然后再运行
MickyInvQ
2020/09/27
3.7K0
idea  使用 lombok无法获取到get方法 的坑
tree组件在for循环中无法使用getCheckedNodes这个方法
原理: 通过鼠标点击拿到选中的id,然后判断数组中存不存在这个id,有就删除,没有就添加这个id;
用户4344670
2019/08/28
3.5K0
tree组件在for循环中无法使用getCheckedNodes这个方法
python类的初始化方法_python初始化列表
在scikit-learn基础上系统结合数学和编程的角度学习了机器学习后(我的github:https://github.com/wwcom614/machine-learning),意犹未尽,打算再借势学习下深度学习TensorFlow。无奈安装之后遇到了这个问题,耽误了几个小时才得以解决。
全栈程序员站长
2022/09/27
1K0
pyinstaller打包pyqt5程序无法运行
转载自:https://www.cnblogs.com/boliu/p/7574804.html
渔父歌
2019/02/28
2.1K0
点击加载更多

相似问题

使用GenServer初始化ETS缓存

10

如何使genserver使用频率值Elixir运行

15

Genserver API通过转换方法的综合响应

10

使用GenServer键值对创建REST API

117

GenServer的优美关机

33
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文