Heim  >  Artikel  >  Backend-Entwicklung  >  Lösung für die Eingabeaufforderung TypeError(\"Unsupported Deadline %r\" % Deadline)

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

王林
王林nach vorne
2024-03-01 13:20:45850Durchsuche

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)

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:lsjlt.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen