执行rasa shell 遇到asyncio.exceptions.TimeoutError报错

在《树莓派3B运行rasa init和rasa shell遇到的tensorflow报错总结》一文中,我遇到的第7个报错是首次运行rasa shell时候碰到的。按照我在文中记录的解决方案,处理成功。

结果,今天我又一次遇到了asyncio  - Task exception was never retrieved的报错(如图),我先是吃了一惊,然后第一反应是按照上次的处理方法又操作了一遍,然后……然并卵!

执行rasa shell 遇到asyncio.exceptions.TimeoutError报错_第1张图片

怎么会无效?我再次仔细检查报错信息,这次啊注意到两个黄框圈出来的内容,这是timeout……什么鬼?

上网查了又查,终于确认了错误原因,是没有成功连接rasa action server。是因为我没有执行rasa run actions?但之前也没启动,也是正常的呀?(见《树莓派智能语音助手之首次RASA模型训练》)

先不管了,开了一个新的terminal,输入rasa run actions,第一次执行果然遇到报错《第一次运行rasa run actions遇到2个报错——与markupsafe和greenlet有关》。

把2个报错的问题解决了,成功执行rasa run actions,再执行rasa shell,还是一样,在我发送了消息,等到chatbot回复的时候,asyncio.exceptions.TimeoutError如期而至。我彻底傻眼了……

再查网络,看到有文章说这是自定义actions没有注册成功导致连接失败。一语惊醒梦中人。在最初的模型训练中,我的确没有加入自定义actions(主要是不会)。但我今天刚刚抄了一篇actions做试验,也的确没有注册……

立马在旁边的terminal停掉之前在跑的actions server,重新输入:

python -m rasa run actions –actions actions

执行rasa shell 遇到asyncio.exceptions.TimeoutError报错_第2张图片

注册成功,再回到rasa shell,还是老样子。我崩溃了……

不要慌,静一静!回忆之前正常的场景,我把actions server先关了,然后把actions.py重新变成空白的,再跑rasa shell,没有解决。

忽然想起来也不知是哪里看到的,说rasa工程文件夹里的文件只要变动了,模型就要重新训练。索性把domain.yml和stories.md里面涉及这次新增actions的内容都注释掉,然后执行rasa train,成功后再执行rasa shell,这次没有再报错!

新的问题来了,我不可能永远不自定义actions啊!犹豫了会儿,咬咬牙,重新恢复几个文档里面的新增actions部分,然后把actions.py也再次恢复。之后先执行actions的注册,同时把actions server起来;之后重新运行rasa train;最后再次执行rasa shell……

执行rasa shell 遇到asyncio.exceptions.TimeoutError报错_第3张图片

成功啦!!

最后把我抄的actions.py的文章出处也贴出来:

Rasa Core实践 报时机器人_rasa-webchat-CSDN博客

回过头来看,人家文章里写的很清楚:rasa run actions -> rasa train ->rasa shell ,果然是文章不看全,吃亏在眼前。

你可能感兴趣的:(RASA学习,树莓派,聊天机器人,rasa,python)