做大数据的童鞋经常会写定时任务跑数据,由于任务之间的依赖(一般都是下游依赖上游的数据产出),所以经常会导致数据获取失败,因为很多人发现数据失败后

都会去查看日志,然后手动去执行自己的任务。下面我实现了一个自动重复执行去数据库取数,如果失败后自动重新去获取,直到把数据获取到。

建数据表:

 CREATE TABLE `testtable` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

开始的时候数据表是空的,等到脚本重试第3秒的时候向数据库插入数据。以下是python代码的实现

 #!/usr/bin/env python
#-*- coning:utf-8 -*- import MySQLdb
from time import sleep class GetData(object):
def __init__(self):
self.conn = ''
self.host = '127.0.0.1'
self.port = 3306
self.user = 'root'
self.passwd = ''
self.db = 'test'
self.cnum = 5 #set retry number def init_connect(self):
self.conn = MySQLdb.connect(host=self.host, user=self.user, passwd=self.passwd, db=self.db, port=self.port,
charset='utf8') def get_data(self):
self.init_connect()
cur = self.conn.cursor()
sql = "select * from testtable"
cur.execute(sql)
rs = cur.fetchall()
cur.close()
self.conn.close()
return rs def run(self):
count = 1
while (count <= self.cnum):
rs = self.get_data()
if len(rs) > 0:
print len(rs)
break print count
sleep(10)
count += 1 if __name__ == '__main__':
gd = GetData()
gd.run()

自己可以手动执行,在代码执行到第3秒的时候,执行下面的sql

insert into testtable(`name`) values (''),(''),(''),(''),(''),('');

下面是定时的任务的脚本

00 08 * * * cd /home/python/lsh_sync; python getdata.py >> getdata.log 2>&1

OVER!

python定时重跑获取数据的更多相关文章

  1. Python Socket请求网站获取数据

     Python Socket请求网站获取数据 ---阻塞 I/O     ->收快递,快递如果不到,就干不了其他的活 ---非阻塞I/0 ->收快递,不断的去问,有没有送到,有没有送到,. ...

  2. vue单页应用中,使用setInterval()定时向服务器获取数据,后来跳转页面后,发现还在不停的获取数据。

    使用VUE开发单页项目时遇到这样的问题,mounted中使用setInterval()定时向服务器获取数据,后来跳转页面后,发现还在不停的获取数据.我以为是因为我路由用的push导致的,改成repla ...

  3. Python连接MySQL数据库获取数据绘制柱状图

    一.Python通过pymysql包获取MySQL数据库中的数据(没有对应包的可以通过pip install pymysql 安装对应的包) import matplotlib.pyplot as p ...

  4. python使用mysql connection获取数据感知不到数据变化问题

    在做数据同步校验的时候,需要从mysql fetch数据和hbase的数据进行对比,发现即使mysql数据变化了,类似下面的代码返回的值还是之前的数据.抽取的代码大概如下: import MySQL ...

  5. Python 中的登陆获取数据跳转页面(不含数据库)

    简单表单和模板: import os.path import tornado.httpserver import tornado.ioloop import tornado.options impor ...

  6. python httplib get和post获取数据

    httplib 下的 status http请求的状态  200 404 500... reason 返回答复 OK或者 FAULRE read()  读取内容 get方法: #!/usr/bin/e ...

  7. python数据库操作常用功能使用详解(创建表/插入数据/获取数据)

    实例1.取得MYSQL版本 复制代码 代码如下: # -*- coding: UTF-8 -*-#安装MYSQL DB for pythonimport MySQLdb as mdbcon = Non ...

  8. Python开发实战教程(8)-向网页提交获取数据

    来这里找志同道合的小伙伴!↑↑↑ Python应用现在如火如荼,应用范围很广.因其效率高开发迅速的优势,快速进入编程语言排行榜前几名.本系列文章致力于可以全面系统的介绍Python语言开发知识和相关知 ...

  9. 无限遍历,Python实现在多维嵌套字典、列表、元组的JSON中获取数据

    背景 在做接口自动化的过程中,接口返回的数据是  列表字典循环嵌套  格式的,所以怎样通过一个key值,获取到被包裹了多层的目标数据成为了摆在我面前的一个问题. 一开始没想自己写,但是搜索后发现虽然很 ...

随机推荐

  1. 压力测试相关之ab命令

    1. 短时压力测试工具 ab 命令(apache的工具) 关键指标: Requests per second:    98.52 [#/sec] (mean)      ###平均每秒的请求数 Tim ...

  2. 识别快递单号(2) - 加载图片到canvas

    传送门: 识别快递单号(1) - 图像处理   转载请注明出处: http://www.cnblogs.com/zaiyuzhong/p/load-image-to-canvas.html 上篇说到我 ...

  3. 基于Unity有限状态机框架

    这个框架是Unity wiki上的框架.网址:http://wiki.unity3d.com/index.php/Finite_State_Machine 这就相当于是“模板”吧,自己写的代码,写啥都 ...

  4. yum 只下载不安装

    以下载busybox为例 1.首先确定有yumdownloader 这个软件,这个软件在yum-utils 工具包里面. # rpm -qa |grep yum-utils # yum -y inst ...

  5. 压缩png质量不改变像素

    private static byte[] CompressionImage(Bitmap bitmap, Stream fileStream, long quality) { using (Syst ...

  6. About kaychen

    关于我 现武汉科技大学,大二学生.互联网前端技术爱好者,未来想从事前端开发工作.进入前端开发领域之前,作为创始人之一,创建了武汉江城时空电子商务有限责任公司.目前在海投网前端开发小组实习.热爱互联网行 ...

  7. thinkphp 缓存数据

    thinkphp 中内置了缓存操作 3.1版本的数据缓存方法是cache 基本用法: S(array('type'=>'xcache','expire'=>60)); 缓存初始化 缓存初始 ...

  8. Maven 上传 jar包 到私服

    登录Nexus后,点击右侧的“Repositories”,显示当前Nexus所管理的Repository, 默认情况下Nexus为我们创建了以下主要的Repository: 1.PublicRepos ...

  9. #1094 : Lost in the City

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Little Hi gets lost in the city. He does not know where he is ...

  10. 太极旋转-JS实现

    刚学了js的一些函数,所以做了一个太极的旋转.做完之后是上面这个样子的,是可以旋转的. 思路: 1.先做一个基准转盘,之后将元素都放在转盘上,跟随转盘动. 2.画两个半圆,主要属性是border-to ...