Rasa超时问题

时间:2019-10-10 11:42:00

标签: terminal timeout lookup rasa-nlu rasa

运行Rasa时(在1.3.3、1.3.7、1.3.8版上尝试过),几乎每次打电话时都会遇到此超时异常消息。我正在运行一个简单的程序,该程序可以识别用户何时提供年龄,并通过操作响应将年龄存储在数据库中:

Bot loaded. Type a message and press enter (use '/stop' to exit):
Your input ->  I am 24 years old
2019-10-10 13:29:33 ERROR    asyncio  - Task exception was never retrieved
future: <Task finished coro=<configure_app.<locals>.run_cmdline_io() done, defined at /Users/Kami/Documents/rasa/venv/lib/python3.7/site-packages/rasa/core/run.py:123> exception=TimeoutError()>
Traceback (most recent call last):
  File "/Users/Kami/Documents/rasa/venv/lib/python3.7/site-packages/rasa/core/run.py", line 127, in run_cmdline_io
    server_url=constants.DEFAULT_SERVER_FORMAT.format("http", port)
  File "/Users/Kami/Documents/rasa/venv/lib/python3.7/site-packages/rasa/core/channels/console.py", line 138, in record_messages
    async for response in bot_responses:
  File "/Users/Kami/Documents/rasa/venv/lib/python3.7/site-packages/async_generator/_impl.py", line 366, in step
    return await ANextIter(self._it, start_fn, *args)
  File "/Users/Kami/Documents/rasa/venv/lib/python3.7/site-packages/async_generator/_impl.py", line 205, in throw
    return self._invoke(self._it.throw, type, value, traceback)
  File "/Users/Kami/Documents/rasa/venv/lib/python3.7/site-packages/async_generator/_impl.py", line 209, in _invoke
    result = fn(*args)
  File "/Users/Kami/Documents/rasa/venv/lib/python3.7/site-packages/rasa/core/channels/console.py", line 103, in send_message_receive_stream
    async for line in resp.content:
  File "/Users/Kami/Documents/rasa/venv/lib/python3.7/site-packages/aiohttp/streams.py", line 40, in __anext__
    rv = await self.read_func()
  File "/Users/Kami/Documents/rasa/venv/lib/python3.7/site-packages/aiohttp/streams.py", line 329, in readline
    await self._wait('readline')
  File "/Users/Kami/Documents/rasa/venv/lib/python3.7/site-packages/aiohttp/streams.py", line 297, in _wait
    await waiter
  File "/Users/Kami/Documents/rasa/venv/lib/python3.7/site-packages/aiohttp/helpers.py", line 585, in __exit__
    raise asyncio.TimeoutError from None
concurrent.futures._base.TimeoutError
Transport closed @ ('127.0.0.1', 63319) and exception experienced during error handling

最初,我认为此超时是由于在我的Rasa程序的另一部分使用大型查找表而引起的,但是为了识别年龄,我使用了一个简单的正则表达式:

## regex:age
- ^(0?[1-9]|[1-9][0-9]|[1][1-9][1-9])$

即使这样也会导致超时。

请帮助我解决此问题。我什至不需要避免超时,我只想知道在哪里可以捕获/忽略此异常。

谢谢!

4 个答案:

答案 0 :(得分:2)

确保您取消注释以下代码

action_endpoint:
 url: "http://localhost:5055/webhook"

在endpoints.yml中。在执行查询数据库的自定义操作时使用。

答案 1 :(得分:1)

我正在从API中获取数据,其中出现超时错误,因为它无法在默认时限内获取数据:

  1. 转到目录:venv / Lib / site-packages / rasa / core / channels / console.py
  2. DEFAULT_STREAM_READING_TIMEOUT_IN_SECONDS 的默认值更改为10以上,就我而言,我将其更改为30,这样可以正常工作。

    另一个原因可能是在短时间内一次又一次地获取数据,这可能导致超时。
    观察:
  • DEFAULT_STREAM_READING_TIMEOUT_IN_SECONDS 设置为10时,我收到超时错误
  • DEFAULT_STREAM_READING_TIMEOUT_IN_SECONDS 设置为30并继续运行rasa shell时,我再次收到超时错误
  • DEFAULT_STREAM_READING_TIMEOUT_IN_SECONDS 设置为30且不经常运行rasa shell时,它会正常运行。

答案 2 :(得分:0)

我现在无法发表评论,但请在维沙尔的回应中添加后续内容。要检查钩子是否存在并等待连接,可以使用 -vv 命令行开关。这将在启动时显示所有可用的钩子。例如:

2020-04-21 14:05:56 DEBUG    rasa.core.utils  - Available web server routes:
/webhooks/rasa                                     GET                            custom_webhook_RasaChatInput.health
/webhooks/rasa/webhook                             POST                           custom_webhook_RasaChatInput.receive
/webhooks/rest                                     GET                            custom_webhook_RestInput.health
/webhooks/rest/webhook                             POST                           custom_webhook_RestInput.receive
/                                                  GET                            hello

答案 3 :(得分:0)

我遇到了同样的问题,但没有通过增加超时时间来解决。

确保您从 rasa action sever 向 rasa shell 发送回“字符串”。我的意思是,如果您在 utter_message 中使用 'text = ',请确保异步结果也是一个字符串,而不仅仅是一个对象或其他东西。如果需要,请更改类型。

Python 3.8

运行 'rasa shell -vv' 告诉我它正在接收一个对象,这就是为什么它无法解析它,因此超时。