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 に変更しましたが、うまくいきました。

    もう 1 つの理由として、短時間に何度もデータをフェッチすると、タイムアウトが発生する可能性があります。
    観察:
  • DEFAULT_STREAM_READING_TIMEOUT_IN_SECONDSが 10 に設定されている場合、タイムアウト エラーが発生します。
  • DEFAULT_STREAM_READING_TIMEOUT_IN_SECONDSが 30に設定され、何度も何度も rasa シェルを実行し続けると、タイムアウト エラーが発生します。
  • DEFAULT_STREAM_READING_TIMEOUT_IN_SECONDSが 30 に設定され、rasa シェルをあまり頻繁に実行しない場合、完全に機能します。
于 2020-11-27T06:37:03.560 に答える