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)

王林
王林avant
2024-03-01 13:20:45894parcourir

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)

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)

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()

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()

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()

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer