Python代码片段
1 记录函数执行耗时
1 def timeToRunWithParams(level, param_idx_lst): 2 def inner(func): 3 def wrapper(*args, **kwargs): 4 s_date = datetime.datetime.now() 5 result = func(*args, **kwargs) 6 duration = datetime.datetime.now() - s_date 7 cost_ms = round(duration.total_seconds() * 1000, 2) 8 if "DEBUG" == level.upper(): 9 sub_params = [args[idx] for idx in param_idx_lst] 10 log.info('func={} with sub_params={} cost={} milliseconds'.format(func.__name__, sub_params, cost_ms)) 11 else: 12 log.info('func={} cost={} milliseconds'.format(func.__name__, cost_ms)) 13 return result 14 return wrapper 15 return inner 16 17 @timeToRunWithParams(level="info", param_idx_lst=[]) 18 def job(): 19 # to do something 20 pass
2 HTTP请求失败自动重试
def make_request(url, timeout=30, max_retries=3): retry_delay = 1 # 初始重试间隔时间为1秒 for i in range(max_retries + 1): try: response = req.get(url, timeout=timeout) response.raise_for_status() # 检查请求是否成功 return response # 返回成功的响应 except req.exceptions.RequestException as e: if i == max_retries: raise # 如果已达到最大重试次数,则将异常抛出 else: log.error("failed to request: {} \n retrying {} times in {} seconds...".format(url, i+1, retry_delay)) time.sleep(retry_delay) retry_delay *= 2 # 增加重试间隔时间
3 输出日志
def get_logger(path='./', filename='access.log', level='debug'): log_level = { 'debug': logging.DEBUG, 'info': logging.INFO, 'warning': logging.WARNING, 'error': logging.ERROR, 'critical': logging.CRITICAL } level = 'debug' if level not in log_level else level if not os.path.exists(path): os.makedirs(path) logfile = os.path.join(path, filename) formatter = logging.Formatter("%(asctime)s.%(msecs)03d [line:%(lineno)d] %(levelname)s %(message)s", datefmt="%Y-%m-%d %H:%M:%S") handler = logging.FileHandler(logfile, mode='a') handler.setFormatter(formatter) # logger = logging.getLogger(__name__) logger = logging.getLogger(filename) logger.setLevel(log_level[level]) logger.addHandler(handler) return logger
4 自定义异常
class CustomException(Exception): def __init__(self, message): self.message = message super().__init__(self.message) def __str__(self): return "Custom Exception: {}".format(self.message) raise CustomException("desc of panic")
作者:Standby — 一生热爱名山大川、草原沙漠,还有我们小郭老师!
出处:http://www.cnblogs.com/standby/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://www.cnblogs.com/standby/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。