Maison > Article > développement back-end > Solution pour inviter TypeError(\"Délai non pris en charge %r\" % délai)
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.
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.
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!