2

运行 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

4 回答 4

3

我正在从一个 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 时,它可以完美运行。
于 2020-11-27T06:37:03.560 回答
2

确保取消注释以下代码

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

在端点.yml 中。当您进行自定义操作以查询数据库时使用它。

于 2020-02-12T13:45:55.087 回答
0

我现在无法发表评论,但可以对 Vishal 的回复进行跟进。要检查挂钩是否存在并等待连接,您可以使用-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
于 2020-04-21T11:10:33.340 回答
0

我有同样的问题,并没有通过增加超时来解决。

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

dispatcher.utter_message(text='has to be a string')

运行“rasa shell -vv”显示它正在接收一个对象,这就是为什么它无法解析它,因此超时。

于 2021-06-28T09:36:52.687 回答