如何在请求失败后将 url 压入队列并重试?
在
python
中,我们经常遇到需要处理请求失败的情形。最常见的方法是将请求数据压入一个队列,这样就可以稍后再试。
这段代码展示了如何将请求数据添加到一个列表(cons),以便稍后重试:
但是,这种方法有一个问题:如果请求一直失败,队列会不断增长。为了解决这个问题,我们可以使用一个异步任务处理程序。
任务处理程序通过将任务存储在队列中并在后台处理它们来帮助管理任务。当一个任务失败时,处理程序会将其重新添加到队列的末尾,以便稍后再试。
Python 3.14.3
微软官方的 Python 扩展,是 VS Code 安装量最高的扩展(209M+)。集成 IntelliSense(通过 Pylance)、调试(通过 Python Debugger)、代码检查、格式化、重构和单元测试等功能。支持 Jupyter Notebook、虚拟环境管理和多 Python 版本切换。
下载
下面是一个简单的异步任务处理程序的示例:
在主线程中,您可以通过以下方式启动任务处理程序:
使用任务处理程序,您可以确保请求失败时队列不会无限增长,并且请求将一直重试,直到成功或达到最大重试次数。
if tt != '':
cons.append(codess)
cons.append(tt)
cons.append(oo)
cons.append(hh)
cons.append(ll)
cons.append(cc)
cons.append(chch)
else:
print('获取失败:' + code)public class taskhandler {
private queue<任务> 任务队列;
public void 添加任务(任务) {}
public void 任务处理方法() {
while (true) {
任务 task = 从任务队列中获取任务;
if (task == null) {
休眠 5 秒;
}
else {
try {
处理任务;
}
catch (exception e) {
将任务添加到任务队列的末尾;
}
}
}
}
}new TaskHandler().开一个后台线程.执行任务处理方法()