登录
首页 >  文章 >  python教程

"TypeError: 支持的超时时间 %r 不被支持" - 如何解决这个报错?

来源:编程网

时间:2024-03-14 12:36:22 175浏览 收藏

目前golang学习网上已经有很多关于文章的文章了,自己在初次阅读这些文章中,也见识到了很多学习思路;那么本文《"TypeError: 支持的超时时间 %r 不被支持" - 如何解决这个报错?》,也希望能帮助到大家,如果阅读完后真的对你学习文章有帮助,欢迎动动手指,评论留言并分享~

tornado有TypeError(\

报错的原因

这个错误是由于在python中使用了tornado时,设置的timeout参数不被支持。一般来说,timeout参数的值应该是一个整数或者是一个float,但是在这种情况下传入了一个不支持的值。可能是其他类型或者是一个不能被转换为整数或float的值。

如何解决

要解决这个错误,需要保证传入timeout参数的值是一个整数或float。这可以通过调整代码或者配置文件来确保。你可以先检查传入timeout参数的值是否合法,如果不是整数或float,可以使用如int() 或float()函数将其转换为合法值。

在你使用了超时参数之前也可以检查是否超时参数是合法的,如果不是则设置一个默认值或者抛出一个异常。

使用例子

是的,下面是一个简单的例子:

import tornado.ioloop

def handle_timeout():
print("timeout occurred")

def start_timeout(timeout):
if not isinstance(timeout, (int,float)):
raise ValueError("timeout must be a number")
tornado.ioloop.IOLoop.current().call_later(timeout, handle_timeout)

try:
start_timeout(10) # this will work
start_timeout("10") # this will raise ValueError
except ValueError as e:
print(str(e))

在这个例子中,我们检查传入的timeout参数是否为整数或者float,如果不是,就会抛出一个 ValueError 异常

另外还有一种方法就是使用默认值,例如

def start_timeout(timeout=10):
if not isinstance(timeout, (int,float)):
timeout = 10 
tornado.ioloop.IOLoop.current().call_later(timeout, handle_timeout)

start_timeout() # this will use the default timeout of 10s

在这里,我们使用了一个默认值为10s,如果传入的timeout参数是非法的,我们就使用默认值。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于文章的相关知识,也可关注golang学习网公众号。

声明:本文转载于:编程网 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>