建议一:脚本的传参
不建议写死参数,尽量传递参数而不是修改代码。可以定义一个方法,以python为例子:
import argparse
def parse_cmd():
parser = argparse.ArgumentParser()
parser.add_argument('-s', '--stage', required=True, type=str, choices=['test', 'product'])
parser.add_argument('-l', '--log', type=str, help='debug log file')
parser.add_argument('-i', '--input', required=True, type=str, help='input file pathname')
return parser.parse_args()
if __name__ == '__main__':
args = parse_cmd() # 获得命令行参数(环境和日志)
stage = args.stage
file_path = args.input
建议二:脚本低耦合,能独立运行,不依赖框架
建议三:做好日志
file_handler = logging.FileHandler(path) # 日志路径
logger = logging.getLogger('LoggerName')
formatter = logging.Formatter('%(asctime)s %(levelname)-8s:%(message)s')
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)
def function1(logger):
try:
......
except:
logger.error('方法function1发生错误:%s' % e)
建议四:大批量写redis,比如100万条,用pipeline
rcli_0 = redis.StrictRedis(host=....)
pipe_0 = rcli_0.pipeline()
pipe_0.set(key1, value)
pipe_0.set(key2, value)
pipe_0.set(key3, value)
pipe_0.execute()
建议五:crontab定时脚本