• 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!

  • 相关阅读:
    TCP连接异常断开检测(转)
    正排索引与倒排索引(转)
    Elasticsearch之优化
    把网卡中断绑定到CPU,最大化网卡的吞吐量(转)
    十张GIFs让你弄懂递归等概念
    二维数组回形遍历(转)
    如何做Go的性能优化?(转)
    Go的50度灰:Golang新开发者要注意的陷阱和常见错误(转)
    Nginx配置之负载均衡、限流、缓存、黑名单和灰度发布(转)
    从零到卓越:京东客服即时通讯系统的技术架构演进历程(转)
  • 原文地址:https://www.cnblogs.com/gide/p/6225376.html
Copyright © 2020-2023  润新知