>  기사  >  백엔드 개발  >  TypeError(\"지원되지 않는 기한 %r\" % 기한) 프롬프트에 대한 솔루션

TypeError(\"지원되지 않는 기한 %r\" % 기한) 프롬프트에 대한 솔루션

王林
王林앞으로
2024-03-01 13:20:45847검색

TypeError(\지원되지 않는 기한 %r\ % 기한) 프롬프트에 대한 솔루션

오류가 발생하는 이유

이 오류는 Tornado의 ioLoop.add_timeout() 또는 IOLoop.add_callback() 메서드를 사용할 때 전달된 마감일 매개 변수의 값이 정수 또는 부동 소수점 숫자가 아니기 때문입니다. 숫자 유형 매개변수를 사용해야 합니다.

해결 방법

해결 방법은 코드에서 IOLoop.add_timeout() 또는 IOLoop.add_callback() 메서드에 전달된 마감 매개 변수의 값을 확인하여 정수 또는 부동 소수점 숫자인지 확인하는 것입니다.

예를 들어 string 또는 기타 숫자가 아닌 값을 전달하는 경우 이를 정수 또는 부동 소수점으로 변환하세요.

다른 이유로 인해 오류가 발생한 경우 더 자세한 답변을 드릴 수 있도록 더 많은 컨텍스트와 코드 조각을 제공해 주세요.

사용 예

예, 예는 다음과 같습니다.

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)

첫 번째 예에서는 부동소수점을 마감일로 전달하고 있는데 이는 맞습니다. 두 번째 예에서는 문자열을 전달하므로 오류가 발생합니다. 마감일을 float 유형으로 변환해야 합니다.

아아아아

이렇게 하면 오류를 피할 수 있습니다

미래의 특정 시점에 콜백 함수를 실행하려면 타임스탬프를 첫 번째 매개변수로 받아들이고 해당 타임스탬프가 도착한 후에 실행되는 IOLoop.add_timeout() 메서드를 사용할 수 있습니다. 콜백 함수. 예를 들어 5초 후에 콜백 함수를 실행하려면 다음 코드를 사용하면 됩니다.

deadline = float("5.0")
tornado.ioloop.IOLoop.current().add_timeout(deadline, my_callback)

다음 이벤트 루프에서 콜백 함수를 실행하려면 IOLoop.add_callback() 메서드를 사용하면 됩니다.

아아아아

또 다른 방법은 IOLoop.call_later() 메서드를 사용하는 것입니다. 이 메서드는 몇 초를 첫 번째 매개 변수로 받아들이고 해당 시간이 경과한 후 콜백 함수를 실행합니다.

예를 들어 5초 후에 콜백 함수를 실행하려면 다음 코드를 사용하면 됩니다.

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

고급 시나리오에서 이러한 방법을 사용하려는 경우 Tornado 문서에서 자세한 정보를 찾을 수 있습니다.

위 내용은 TypeError(\"지원되지 않는 기한 %r\" % 기한) 프롬프트에 대한 솔루션의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 lsjlt.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제