Maison > développement back-end > Tutoriel Python > La solution à gen.Return(\'hello\') apparaissant dans tornado

La solution à gen.Return(\'hello\') apparaissant dans tornado

WBOY
Libérer: 2024-02-29 22:58:02
avant
1199 Les gens l'ont consulté

La solution à gen.Return(\hello\) apparaissant dans tornado

La raison de l'erreur

Dans python, Tornado est un réseauframework basé sur la boucle d'événements. Il utilise des coroutines pour gérer la concurrency, et gen.Return("hello") est une méthode pour renvoyer des valeurs dans les coroutines. Lorsque vous utilisez les fonctionnalités asynchrones de Tornado, utilisez gen.Return() pour renvoyer une valeur dans une coroutine.

Comment résoudre

Dans Tornado, utilisez rendement et gen.Return() pour renvoyer des valeurs. Si vous souhaitez renvoyer une valeur dans une coroutine, vous pouvez utiliser rendement et gen.Return() pour atteindre votre objectif.

Exemple :

@gen.coroutine
def my_coroutine():
result = yield some_async_call()
raise gen.Return(result)
Copier après la connexion

Utilisez asyncio.run() ou tornado.gen.convert_yielded() en dehors de la fonction pour obtenir la valeur de retour.

result = await my_coroutine()
Copier après la connexion
Copier après la connexion

Si vous souhaitez renvoyer une valeur dans une coroutine, vous devez utiliser rendement et gen.Return() pour atteindre votre objectif.

Exemple d'utilisation

Ce qui suit est un exemple simple d'utilisation de coroutines dans Tornado et de valeurs renvoyées :

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)
Copier après la connexion

Some_async_call() voici une fonction asynchrone.

Si vous souhaitez obtenir la valeur de retour en dehors de la fonction, vous pouvez faire ceci :

result = await my_coroutine()
Copier après la connexion
Copier après la connexion

Bien sûr, la syntaxe async/await peut également être utilisée, ce qui nécessite d'ajouter le modificateur async avant la fonction et d'utiliser wait lors de l'appel de la fonction.

async def my_coroutine():
result = await some_async_call()
return result
Copier après la connexion

Dans l'exemple ci-dessus, le résultat est la valeur de retour, qui peut être traitée dans handle_result().

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:lsjlt.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal