Maison > développement back-end > Tutoriel Python > Que se passe-t-il lorsque Tornado signale une erreur TypeError (\'Unsupported timeout %r\' % timeout) ?

Que se passe-t-il lorsque Tornado signale une erreur TypeError (\'Unsupported timeout %r\' % timeout) ?

WBOY
Libérer: 2024-03-01 11:20:03
avant
933 Les gens l'ont consulté

Que se passe-t-il lorsque Tornado signale une erreur TypeError (\Unsupported timeout %r\ % timeout) ?

La raison de l'erreur

Cette erreur est due au fait que lors de l'utilisation de tornado dans python, le paramètre de délai d'attente défini n'est pas pris en charge. Normalement, la valeur du paramètre timeout doit être un entier ou un flottant, mais dans ce cas, une valeur non prise en charge a été transmise. Il peut s'agir d'un autre type ou d'une valeur qui ne peut pas être convertie en entier ou en flottant.

Comment résoudre

Pour résoudre cette erreur, vous devez vous assurer que la valeur du paramètre timeout transmis est un entier ou un flottant. Cela peut être assuré en ajustant le code ou les fichiers de configuration. Vous pouvez d'abord vérifier si la valeur transmise dans le paramètre timeout est légale. S'il ne s'agit pas d'un entier ou d'un flottant, vous pouvez utiliser des fonctions telles que int() ou float() pour la convertir en valeur légale.

Avant d'utiliser le paramètre timeout, vous pouvez également vérifier si le paramètre timeout est légal. Sinon, définissez une valeur par défaut ou lancez une exception.

Exemple d'utilisation

Oui, voici un exemple simple :

import tornado.ioloop

def handle_timeout():
print("timeout occurred")

def start_timeout(timeout):
if not isinstance(timeout, (int,float)):
raise ValueError("timeout must be a number")
tornado.ioloop.IOLoop.current().call_later(timeout, handle_timeout)

try:
start_timeout(10) # this will work
start_timeout("10") # this will raise ValueError
except ValueError as e:
print(str(e))
Copier après la connexion

Dans cet exemple, nous vérifions si le paramètre timeout transmis est un entier ou un flottant. Sinon, une exception ValueError sera levée.

Une autre façon consiste à utiliser la valeur par défaut, telle que

def start_timeout(timeout=10):
if not isinstance(timeout, (int,float)):
timeout = 10 
tornado.ioloop.IOLoop.current().call_later(timeout, handle_timeout)

start_timeout() # this will use the default timeout of 10s
Copier après la connexion
.

Ici, nous utilisons une valeur par défaut de 10s. Si le paramètre de délai d'attente transmis est illégal, nous utilisons la valeur par défaut.

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