新手用tkinter做图形化界面编程的时候,容易碰到超时未响应的情况,这个让人头痛。
我今天就遇到了这样的一个问题。
超时未响应代码:
def writer(): data={'keywords':'tkinter这个学习怎么样?', 'wish_content_count':501,} url='http://apis.5118.com/ai/autoexpander' headers={'Content-Type':'application/x-www-form-urlencoded', 'Authorization': yourkey, } resp=requests.post(url,headers=headers,data=data).json()
这段代码,因为向5118的一个api接口发送请求,响应比较慢,导致代码运行的时候,界面一直没有反应,鼠标点击一下,就出现了超时未响应的状况。
这种情况应该怎么办呢?
api接口响应时间通常是未知的,如果要处理好超时的情况,可以设置timeout参数,如下:
resp=requests.post(url,headers=headers,data=data,timeout=3).json()
当然,我的建议是使用多线程。将代码改成下面这样:
import threading
def writer(): data={'keywords':'tkinter这个学习怎么样?', 'wish_content_count':501,} url='http://apis.5118.com/ai/autoexpander' headers={'Content-Type':'application/x-www-form-urlencoded', 'Authorization': yourkey, } def postit(): resp=requests.post(url,headers=headers,data=data).json() t=threading.Thread(target=postit) t.start()
这样子即使没有响应结果,也不会出现超时未响应卡死的情况!
希望我的经验对你有帮助!
标签: Tkinter示例