#coding utf8 #!/usr/bin/python import os import json import time import hashlib import urllib.request import tornado.ioloop import tornado.web def md5Sign(params, secret, timestamp, connstr = '&', secret_connstr = ':'): print('md5in') print(params) params_str = '' for key in sorted(params.keys()): params_str = params_str + key + '=' + str(params[key]) + connstr print(params_str) if params_str != '' and connstr != '': params_str = params_str[0:-1] m5 = hashlib.md5() str1 = params_str + secret_connstr + str(timestamp) + secret m5.update(str1) return m5.hexdigest() def getDaySeconds(time_val, incdays): time_zone = 8 return int((time_val + time_zone * 3600)/3600/24 + incdays) * 3600 * 24 - 3600 * time_zone; def sendNotify(conf, sendtime): try: print('sendNotify') params = {'key' : 'kingsome'} secret = 'fc38349c5d084e920925e614c420be9f' timestamp = time.time() md5signstr = md5Sign(params, secret, timestamp) print(md5signstr) url = conf['notify_url'] + '×tamp=' + timestamp + '&sign=' + md5signstr print(url) req = urllib.request.Request(url) data = urllib.request.urlopen(req).readall() except: pass #进入下一次循环 tornado.ioloop.IOLoop.current().call_at(getDaySeconds(time.time(), 1) + sendtime, lambda : sendNotify(conf, sendtime)) class SelfCheckingHandler(tornado.web.RequestHandler): def get(self): self.write(json.dumps({ 'errcode': 0, 'errmsg': '', 'healthy': 1, 'max_rundelay': 10 })) def make_app(): return tornado.web.Application([ (r"/webapp/index[\.]php", SelfCheckingHandler), ]) if __name__ == "__main__": conf = json.loads(open('../config/kefu_robot.json', 'r').read()) app = make_app() app.listen(conf['listen_port']) tornado.ioloop.IOLoop.current().call_at(getDaySeconds(time.time(), 1) + conf['sendtime1'], lambda : sendNotify(conf, conf['sendtime1'])) tornado.ioloop.IOLoop.current().call_at(getDaySeconds(time.time(), 1) + conf['sendtime2'], lambda : sendNotify(conf, conf['sendtime2'])) tornado.ioloop.IOLoop.current().call_at(time.time() + 3, lambda : sendNotify(conf, 30)) tornado.ioloop.IOLoop.current().start()