python设置检查点简单实现
说检查点,其实就是对过去历史的记录,可以认为是log.不过这里进行了简化.举例来说,我现在又一段文本.文本里放有一堆堆的链接地址.我现在的任务是下载那些地址
中的内容.另外因为网络的问题或者网站的问题,每次下载可能不会非常的成功.有可能出现断链或者socket异常错误。不过不管产生什么样的错误,我都希望我的程序能
够一直跑下去。或者能停掉后,继续从为下载的链接处跑。而不是从开始的地方跑。这个问题非常简单。因为这些链接是上下文无关的(上下文有关的情况要另外分析)。所以我
只要记录程序运行停止前的最后一条,就有希望能够延续前面的工作。这里实现中使用的是记录原有的链接,大家也可以使用计数器的方法来记录。代码如下:
将文件读取指针fd移至到检查点对应的内容处 # check point 的规则为,读取文件一行或者多行,进行操作后,将此一行或多行送入 #
检查文件check_point中。以后再次运行程序,即可从该检查点处继续运行。 def GoCheckPoint(fd,check_point): if
not os.path.isfile(check_point): f_check = open(check_point,’w’)
f_check.close() f_check = open(check_point,’r’) lines = f_check.readlines() if
len(lines) > 0: check_content = lines[-1] #找到检查点最后一行 check_content =
check_content.strip(‘ /n/r’) # go to check point while True: content =
fd.readline() if content == ‘’: # eof raise CheckPointMissContentError if
content.strip(‘ /n/r’) == check_content: break f_check.close()#关闭检查点
有了上面一段还是不够的 大专栏 python设置检查点简单实现,需要下面的代码补充:
伪代码 def Download(downloadlist,sleep_time): if os.path.isfile(downloadlist):
f = open(downloadlist) # check_point file name,这里为自动生成一个检查点文件 check_point =
file[0:file.rfind(‘.’)]+’_check.txt’ Util.GoCheckPoint(f,check_point)
#这就是上面代码中的GoCheckPoint函数 f_check = open(check_point,’a’)# 以追加方式写入 try: while
True: content = f.readline() if content == ‘’: # eof break content =
content.strip(‘ /n/r’) if content != ‘’: # has download url
time.sleep(sleep_time) DownloadOper(path,url)
#这里是伪代码..可以认为是urllib.request.retrieve()函数或者是urllib.request.urlopen()啥的 #
作为响应的操作后再将内容写入检查点文件 f_check.write(content+’/n’) f_check.flush() #
必须的,否则会缓存,不会写入硬盘中 except : # 蹦个异常也不怕,以后再次按F5执行即可 raise Exception() return
Util.FAILURE # 这是我设置的常量,大家认为是0或者1就可以了 finally: f.close() f_check.close()# 关闭文件
print(‘Downloading is done……………………’) return Util.SUCCESS
执行完操作之后再写入到检查点文件中。以后程序挂掉,只要检查点文件还在,就可以延续前面的工作。不过这里的检查点相对于数据库中事务处理的检查点还是太简单了点。
python设置检查点简单实现的更多相关文章
- python之simplejson,Python版的简单、 快速、 可扩展 JSON 编码器/解码器
python之simplejson,Python版的简单. 快速. 可扩展 JSON 编码器/解码器 simplejson Python版的简单. 快速. 可扩展 JSON 编码器/解码器 编码基本的 ...
- 用Python编写一个简单的Http Server
用Python编写一个简单的Http Server Python内置了支持HTTP协议的模块,我们可以用来开发单机版功能较少的Web服务器.Python支持该功能的实现模块是BaseFTTPServe ...
- Python -- Scrapy 框架简单介绍(Scrapy 安装及项目创建)
Python -- Scrapy 框架简单介绍 最近在学习python 爬虫,先后了解学习urllib.urllib2.requests等,后来发现爬虫也有很多框架,而推荐学习最多就是Scrapy框架 ...
- C#调用Python脚本的简单示例
C#调用Python脚本的简单示例 分类:Python (2311) (0) 举报 收藏 IronPython是一种在 .NET及 Mono上的 Python实现,由微软的 Jim Huguni ...
- LoadRunner设置检查点的几种方法介绍
前段时间在群里跟大家讨论一个关于性能测试的 问题,谈到如何评估测试结果,有一个朋友谈到规范问题,让我颇有感触,他说他们公司每次执行压力测试的时候,都要求脚本中必须有检查点存在,不然测试结果 将不被认可 ...
- python+selenium之简单介绍继承
python+selenium之简单介绍继承 一.此例简单的介绍一下继承 1.面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制.继承完全可以理解成类之间的类型和子类型 ...
- 使用Python实现一个简单的项目监控
在公司里做的一个接口系统,主要是对接第三方的系统接口,所以,这个系统里会和很多其他公司的项目交互.随之而来一个很蛋疼的问题,这么多公司的接口,不同公司接口的稳定性差别很大,访问量大的时候,有的不怎么行 ...
- Python+requests 发送简单请求--》获取响应状态--》获取请求响应数据
Python+requests 发送简单请求-->获取响应状态-->获取请求响应数据 1.环境:安装了Python和vscode编译器(Python自带的编译器也ok).fiddler抓包 ...
- Python生成文本格式的excel\xlwt生成文本格式的excel\Python设置excel单元格格式为文本\Python excel xlwt 文本格式
Python生成文本格式的excel\xlwt生成文本格式的excel\Python设置excel单元格格式为文本\Python excel xlwt 文本格式 解决: xlwt 中设置单元格样式主要 ...
随机推荐
- DRF框架之ModelSerializer序列化器
ModelSerializer是Serializer的子类,序列化和反序列化跟Serializer一样. ModelSerializer与常规的Serializer相同,但提供了: 基于模型类自动生成 ...
- 第04项目:淘淘商城(SpringMVC+Spring+Mybatis)【第十天】(单点登录系统实现)
https://pan.baidu.com/s/1bptYGAb#list/path=%2F&parentPath=%2Fsharelink389619878-229862621083040 ...
- RDD(十)——案例实操
需求: 数据结构:时间戳,省份,城市,用户,广告,中间字段使用空格分割. 样本如下: 1516609143867 6 7 64 16 1516609143869 9 4 75 18 151660914 ...
- linux select函数
/**两个线程一个负责监听客户端,一个负责读客户端请求. 服务器模型,*主控线程负责accept监听链接的客户端,*把客户端fd放入任务队列中(),分离子线程则从任务队列取出所有的*客户端描述加入se ...
- 存储过程获取QLIKVIEW关键数据
declare @table table(DDID INT,FHDID INT ,CKDID INT,ZGYSDID INT,CWYSDID INT)--定义表变量来存放存储过程返回的内容insert ...
- 30)PHP,引用对象和克隆对象的区别
复制文件.建立快捷方式的区别,克隆就是复制,引用就是快捷方式,引用的对象实际上同一个东西,修改任何一个变量,另外一个也会跟着变化.
- SG函数学习
尼姆博弈就是sg函数的简单体现 学习粗:https://blog.csdn.net/luomingjun12315/article/details/45555495 //f[N]:可改变当前状态的方式 ...
- js之意想不到的结果
js 是弱类型语言 ,在进行计算时 如果遇到不能计算的单位,就会进行默认转换 1.typeof NaN 结果为 “number” 原因:NaN 表示 不是不是一个数字(Not a Number), ...
- 吴裕雄--天生自然 JAVASCRIPT开发学习:对象 实例(2)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 安装rpm包时遇到error: Failed dependencies:错误
在linux下安装rpm包时经常会遇到下面这个问题: error: Failed dependencies: ............................................. ...