Rasa超时问题

MrR*_*one 3 lookup terminal timeout 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
Run Code Online (Sandbox Code Playgroud)

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

## regex:age
- ^(0?[1-9]|[1-9][0-9]|[1][1-9][1-9])$
Run Code Online (Sandbox Code Playgroud)

即使这样也会导致超时。

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

谢谢!

sau*_*i23 5

我从 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 时,它可以完美运行。