Lösung für die Eingabeaufforderung TypeError(\'Unsupported Deadline %r\' % Deadline)

王林
Freigeben: 2024-03-01 13:20:45
nach vorne
861 Leute haben es durchsucht

Lösung für die Eingabeaufforderung TypeError(\Unsupported Deadline %r\ % Deadline)

Der Grund für den Fehler

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.

So lösen Sie das Problem

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.

Anwendungsbeispiel

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)
Nach dem Login kopieren

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)
Nach dem Login kopieren

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()
Nach dem Login kopieren

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()
Nach dem Login kopieren

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()
Nach dem Login kopieren

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!

Quelle:lsjlt.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage