ホームページ >バックエンド開発 >Python チュートリアル >竜巻に現れる gen.Return(\'hello\') の解決策

竜巻に現れる gen.Return(\'hello\') の解決策

WBOY
WBOY転載
2024-02-29 22:58:021201ブラウズ

竜巻に現れる gen.Return(\hello\) の解決策

エラーの理由

python では、Tornado は networkframework# に基づいています。イベントループ##。 concurrency を処理するためにコルーチンを使用しており、gen.Return("hello") はコルーチンで値を返すメソッドです。 Tornado の非同期機能を使用する場合は、gen.Return() を使用してコルーチンの値を返します。

解決方法

Tornado では、yield と gen.Return() を使用して値を返します。コルーチンで値を返したい場合は、yield と gen.Return() を使用して目的を達成できます。

例:

@gen.coroutine
def my_coroutine():
result = yield some_async_call()
raise gen.Return(result)

戻り値を取得するには、関数の外で async

io.run() または tornado.gen.convert_yielded() を使用します。 rree

コルーチンで値を返したい場合は、yield と gen.Return() を使用して目的を達成する必要があります。

使用例

次は、Tornado でコルーチンを使用して値を返す簡単な例です:

result = await my_coroutine()

Some_async_call() は非同期関数です。

関数の外で戻り値を取得したい場合は、次のようにすることができます:

import tornado.ioloop
import tornado.gen

@tornado.gen.coroutine
def my_coroutine():
result = yield some_async_call()
raise tornado.gen.Return(result)

def handle_result(result):
print(result)

if __name__ == "__main__":
result = tornado.ioloop.IOLoop.current().run_sync(my_coroutine)
handle_result(result)

もちろん、async/await 構文も使用できます。その場合は、関数の前に async 修飾子を追加し、関数を呼び出すときに await を使用する必要があります。

rree

上記の例では、result は戻り値であり、handle_result() で処理できます。

以上が竜巻に現れる gen.Return(\'hello\') の解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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