Heim > Artikel > Backend-Entwicklung > Lösung für die Eingabeaufforderung TypeError(\"Unsupported Deadline %r\" % Deadline)
Dieser Fehler liegt daran, dass bei Verwendung der Methode ioLoop.add_timeout() oder IOLoop.add_callback() von Tornado der Wert des übergebenen Deadline-Parameters keine Ganzzahl oder Gleitkommazahl ist. Es sollten numerische Parameter verwendet werden.
Die Lösung besteht darin, den Wert des Fristparameters zu überprüfen, der an die Methode IOLoop.add_timeout() oder IOLoop.add_callback() im Code übergeben wird, und sicherzustellen, dass es sich um eine Ganzzahl oder eine Gleitkommazahl handelt.
Wenn Sie beispielsweise einen String oder einen anderen nicht numerischen Wert übergeben, konvertieren Sie ihn in eine Ganzzahl oder Gleitkommazahl.
Wenn der Fehler auf andere Gründe zurückzuführen ist, geben Sie bitte mehr Kontext und Codeausschnitte an, damit ich Ihnen eine detailliertere Antwort geben kann.
Ja, hier ist ein Beispiel:
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)
Im ersten Beispiel übergeben wir einen Float als Frist, was richtig ist. Im zweiten Beispiel übergeben wir eine Zeichenfolge, die einen Fehler verursacht. Wir sollten die Frist in den Float-Typ umwandeln.
deadline = float("5.0") tornado.ioloop.IOLoop.current().add_timeout(deadline, my_callback)
Auf diese Weise können Sie Fehler vermeiden
Wenn Sie die Callback-Funktion irgendwann in der Zukunft ausführen möchten, können Sie die Methode IOLoop.add_timeout() verwenden, die einen Zeitstempel als ersten Parameter akzeptiert und diesen dann ausführt die Callback-Funktion. Wenn Sie beispielsweise nach 5 Sekunden eine Rückruffunktion ausführen möchten, können Sie den folgenden Code verwenden:
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()
Wenn Sie die Rückruffunktion in der nächsten Ereignisschleife ausführen möchten, können Sie die Methode IOLoop.add_callback() verwenden.
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()
Eine andere Möglichkeit besteht darin, die Methode IOLoop.call_later() zu verwenden, die eine Anzahl von Sekunden als ersten Parameter akzeptiert und die Rückruffunktion nach Ablauf dieser Zeit ausführt.
Wenn Sie beispielsweise die Rückruffunktion nach 5 Sekunden ausführen möchten, können Sie den folgenden Code verwenden:
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()
Wenn Sie diese Methoden in fortgeschritteneren Szenarien verwenden möchten, finden Sie weitere Informationen in der Tornado-Dokumentation.
Das obige ist der detaillierte Inhalt vonLösung für die Eingabeaufforderung TypeError(\"Unsupported Deadline %r\" % Deadline). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!