Maison > développement back-end > Tutoriel Python > Solution pour inviter TypeError(\'Délai non pris en charge %r\' % délai)

Solution pour inviter TypeError(\'Délai non pris en charge %r\' % délai)

王林
Libérer: 2024-03-01 13:20:45
avant
893 Les gens l'ont consulté

Solution pour inviter TypeError(\Délai non pris en charge %r\ % délai)

La raison de l'erreur

Cette erreur est due au fait que lors de l'utilisation de la méthode ioLoop.add_timeout() ou IOLoop.add_callback() de Tornado, la valeur du paramètre de date limite transmis n'est pas un nombre entier ou à virgule flottante. Des paramètres de type numérique doivent être utilisés.

Comment résoudre

La solution consiste à vérifier la valeur du paramètre date limite transmis à la méthode IOLoop.add_timeout() ou IOLoop.add_callback() dans le code et à s'assurer qu'il s'agit d'un nombre entier ou à virgule flottante.

Par exemple, si vous transmettez une chaîne ou une autre valeur non numérique, convertissez-la en entier ou en flottant.

Si l'erreur est due à d'autres raisons, veuillez fournir plus de contexte et des extraits de code pour m'aider à vous donner une réponse plus détaillée.

Exemple d'utilisation

Oui, voici un exemple :

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

Dans le premier exemple, nous passons un float comme date limite, ce qui est correct. Dans le deuxième exemple, nous transmettons une chaîne, ce qui provoquera une erreur. Nous devrions convertir la date limite en type float.

deadline = float("5.0")
tornado.ioloop.IOLoop.current().add_timeout(deadline, my_callback)
Copier après la connexion

De cette façon, vous pouvez éviter les erreurs

Si vous souhaitez exécuter la fonction de rappel à un moment donné dans le futur, vous pouvez utiliser la méthode IOLoop.add_timeout(), qui accepte un horodatage comme premier paramètre, et après cet horodatage arrive Exécuter la fonction de rappel. Par exemple, si vous souhaitez exécuter une fonction de rappel après 5 secondes, vous pouvez utiliser le code suivant :

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

Si vous souhaitez exécuter la fonction de rappel dans la prochaine boucle d'événements, vous pouvez utiliser la méthode IOLoop.add_callback().

import tornado.ioloop

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

# This will call the callback on the next iteration of the event loop
tornado.ioloop.IOLoop.current().add_callback(my_callback)

# Start the IOLoop
tornado.ioloop.IOLoop.current().start()
Copier après la connexion

Une autre façon consiste à utiliser la méthode IOLoop.call_later(), qui accepte un certain nombre de secondes comme premier paramètre et exécute la fonction de rappel une fois ce temps écoulé.

Par exemple, si vous souhaitez exécuter la fonction de rappel après 5 secondes, vous pouvez utiliser le code suivant :

import tornado.ioloop

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

tornado.ioloop.IOLoop.current().call_later(5, my_callback)

# Start the IOLoop
tornado.ioloop.IOLoop.current().start()
Copier après la connexion

Si vous souhaitez utiliser ces méthodes dans des scénarios plus avancés, vous pouvez trouver plus d'informations dans la documentation Tornado.

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