我使用Client.Get(url)函数访问网页。
timeout := time.Duration(wgetTimeout) * time.Second
client := http.Client{Timeout: timeout}
// Get page and check for error (timeout, http ...)
res, err := client.Get(url)
if err != nil {
return "", err
}
defer res.Body.Close()
任何返回的错误将是* url.Error类型。如果请求超时,则url.Error值的Timeout方法将报告true。
如何访问类似bool Timeout()的url.Error方法?
发布在here上的解决方案要求使用Client.Do()函数。
答案 0 :(得分:2)
if e, ok := err.(*url.Error); ok && e.Timeout() {
log.Fatal("timeout is: ", e.Timeout())
} else if err != nil {
panic(err)
}
答案 1 :(得分:0)
使用os.IsTimeout确定错误是否具有返回true的Timeout()方法。
from telegram.error import BadRequest
def is_user_there(channel, chat_id) -> bool:
try:
chat_member = context.bot.getChatMember(channel,update.message.chat_id) # this will return a ChatMember object
if chat_member.status in [‘administrator’, ‘creator’, ‘member’]:
return True
else:
return False
except BadRequest:
return False