【问题标题】:Rasa Timeout IssueRasa 超时问题
【发布时间】:2019-10-10 11:42:00
【问题描述】:

在运行 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])$

即使这样也会导致超时。

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

谢谢!

【问题讨论】:

    标签: terminal timeout lookup rasa-nlu rasa


    【解决方案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】:

      确保您取消注释以下代码

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

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

      【讨论】:

        【解决方案3】:

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

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

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

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

        【讨论】:

          【解决方案4】:

          我现在无法发表评论,但可以对 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
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-04-24
            • 2011-06-19
            • 1970-01-01
            • 2011-04-03
            • 2011-12-28
            相关资源
            最近更新 更多