ホームページ  >  記事  >  バックエンド開発  >  プロンプト TypeError(\'サポートされていない期限 %r\' %期限) の解決策

プロンプト TypeError(\'サポートされていない期限 %r\' %期限) の解決策

王林
王林転載
2024-03-01 13:20:45861ブラウズ

プロンプト TypeError(\サポートされていない期限 %r\ %期限) の解決策

エラーの理由

このエラーは、Tornado の ioLoop.add_timeout() または IOLoop.add_callback() メソッドの使用によって発生します。渡された期限パラメータの値は、整数または浮動小数点数ではありません。数値型パラメータを使用する必要があります。

解決方法

解決策は、コード内の IOLoop.add_timeout() または IOLoop.add_callback() メソッドに渡される期限パラメータの値をチェックして、それが期限切れパラメータであることを確認することです。整数または浮動小数点数。

たとえば、string またはその他の非数値型の値を渡す場合は、それを整数または浮動小数点数に変換します。

エラーが他の理由によるものである場合は、より詳細な回答を提供するために、より詳しいコンテキストとコード スニペットを提供してください。

使用例

はい、例を示します:

import tornado.ioloop

def my_callback():
print("callback called")

# This will work
deadline = tornado.ioloop.IOLoop.current().time() + 5.0
tornado.ioloop.IOLoop.current().add_timeout(deadline, my_callback)

# This will raise "TypeError("Unsupported deadline %r" % deadline)"
deadline = "5.0"
tornado.ioloop.IOLoop.current().add_timeout(deadline, my_callback)

最初の例では、浮動小数点数を期限として渡していますが、これは正しいです。 2 番目の例では、文字列を渡しているため、エラーが発生します。期限を float 型に変換する必要があります。

rree

こうすることでエラーを回避できます

将来のある時点でコールバック関数を実行したい場合は、最初のパラメータとしてタイムスタンプを受け取る IOLoop.add_timeout() メソッドを使用できます。コールバック関数は、このタイムスタンプに達した後に実行されます。たとえば、5 秒後にコールバック関数を実行したい場合は、次のコードを使用できます:

deadline = float("5.0")
tornado.ioloop.IOLoop.current().add_timeout(deadline, my_callback)

次のイベント ループでコールバック関数を実行する場合は、IOLoop.add_callback() メソッドを使用できます。

rree

もう 1 つの方法は、IOLoop.call_later() メソッドを使用することです。このメソッドは、最初のパラメータとして秒数を受け取り、時間が経過した後にコールバック関数を実行します。

たとえば、5 秒後にコールバック関数を実行したい場合は、次のコードを使用できます:

import tornado.ioloop

def my_callback():
print("callback called")

deadline = tornado.ioloop.IOLoop.current().time() + 5.0
tornado.ioloop.IOLoop.current().add_timeout(deadline, my_callback)

# Start the IOLoop
tornado.ioloop.IOLoop.current().start()

これらの方法をより高度なシナリオで使用する場合は、Tornado のドキュメントで詳細を確認できます。

以上がプロンプト TypeError(\'サポートされていない期限 %r\' %期限) の解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はlsjlt.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。