python定时重跑获取数据

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

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

建数据表:

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

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

 1 #!/usr/bin/env python
 2 #-*- coning:utf-8 -*-
 3
 4 import MySQLdb
 5 from time import sleep
 6
 7 class GetData(object):
 8     def __init__(self):
 9         self.conn = ‘‘
10         self.host = ‘127.0.0.1‘
11         self.port = 3306
12         self.user = ‘root‘
13         self.passwd = ‘123456‘
14         self.db = ‘test‘
15         self.cnum = 5 #set retry number
16
17     def init_connect(self):
18         self.conn = MySQLdb.connect(host=self.host, user=self.user, passwd=self.passwd, db=self.db, port=self.port,
19 charset=‘utf8‘)
20
21     def get_data(self):
22         self.init_connect()
23         cur = self.conn.cursor()
24         sql = "select * from testtable"
25         cur.execute(sql)
26         rs = cur.fetchall()
27         cur.close()
28         self.conn.close()
29         return rs
30
31     def run(self):
32         count = 1
33         while (count <= self.cnum):
34             rs = self.get_data()
35             if len(rs) > 0:
36                 print len(rs)
37                 break
38
39             print count
40             sleep(10)
41             count += 1
42
43 if __name__ == ‘__main__‘:
44     gd = GetData()
45     gd.run()

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

insert into testtable(`name`) values (‘123‘),(‘456‘),(‘789‘),(‘1111‘),(‘3222‘),(‘444‘);

下面是定时的任务的脚本

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

OVER!

时间: 2024-07-28 20:19:00

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

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

在做数据同步校验的时候,需要从mysql fetch数据和hbase的数据进行对比,发现即使mysql数据变化了,类似下面的代码返回的值还是之前的数据.抽取的代码大概如下: 1 import MySQL 2 3 conn = MySQL.connect(host = mysql_config['host'], 4 user = mysql_config['username'], 5 password = mysql_config['password'], 6 port = int(mysql_c

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

简单表单和模板: 1 import os.path 2 3 import tornado.httpserver 4 import tornado.ioloop 5 import tornado.options 6 import tornado.web 7 8 from tornado.options import define, options 9 define("port", default=8000, help="run on the given port",

Python定时返回网址状态码&&网页内容是否为json数据

#!/usr/bin/env python#-*- coding:utf:8 -*- import requests,sys,os,time # 判断传值数知否匹配if len(sys.argv) == 3:passelse:    print 'Usage: %s <monitoring_name> <interval_time>'%(sys.argv[0])    sys.exit(2) url = 'url地址' # 覆盖存放检测值文件def successful_state

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

来这里找志同道合的小伙伴!↑↑↑ Python应用现在如火如荼,应用范围很广.因其效率高开发迅速的优势,快速进入编程语言排行榜前几名.本系列文章致力于可以全面系统的介绍Python语言开发知识和相关知识总结.希望大家能够快速入门并学习Python这门语言. 本次课程是在掌握python基础之上进行的.基础没有学习的话建议先查看文章学习基础目录:Python开发实战系列教程-链接汇总,持续更新.进行学习. 最近几天感冒中,四肢乏力以及最近比较忙导致,更新较慢.还请见谅. 概述 很多时候我们需要给网

流量来源分析 0801 0810 0820 流量数据重跑

重跑这3天的数据执行过程和遇到的问题: ①执行 sh siteKeyDataNew.sh 3 20140801 ; 错误提示: awk: cmd. line:39: fatal: cannot open file `../data_today/row_data_20140801*' for reading (No such file or directory)awk: cmd. line:35: fatal: cannot open file `../data_today/row_data_20

Python 2.7_多进程获取简书专题数据(一)

学python几个月了正好练练手,发现问题不断提高,先从专题入手,爬取些数据,一开始对简书网站结构不熟悉,抓取推荐,热门,城市3个导航栏,交流发现推荐和热门是排序不同,url会重复,以及每个专题详情页三个类目最新评论,最新收录, 热门也会重复 做了下调整,代码执行完毕会返回所有专题的urls元组对象,以便下一步进入每个专题页面解析获取其他数据.注:变量focus关注数,和打开专题后最上面显示的专题关注人数会有差异,例如有的专题关注了10175人,在专题列表页会显示成"10.07k",因

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

实例1.取得MYSQL版本 # -*- coding: UTF-8 -*- #安装MYSQL DB for python import MySQLdb as mdb con = None try: #连接mysql的方法:connect(host='localhost',user='root',passwd='root',db='test',port=3306) con = mdb.connect('localhost', 'root', 'root', 'test'); #所有的查询,都在连接

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

接口返回json数据中可能嵌套列表,列表内又嵌套字典的情况, 接口自动化过程中需要通过一个key值直接获取到对应的value,所以有了下面的函数 不多说,上代码: #! /usr/bin/python # coding:utf-8 """ @author:Bingo.he @file: get_target_value.py @time: 2017/12/22 """ def get_target_value(key, dic, tmp_list

HTTP协议与使用Python获取数据并写入MySQL

一.Http协议 二.Https协议 三.使用Python获取数据 (1)urlib (2)GET请求 (3)POST请求 四.爬取豆瓣电影实战 1.思路 (1)在浏览器中输入https://movie.douban.com/j/search_tags?type=movie会得到显示的电影的分类标签,下面以"热门"为例 {"tags":["热门","最新","经典","可播放",&quo