-
Notifications
You must be signed in to change notification settings - Fork 0
/
cityThread.py
84 lines (76 loc) · 2.64 KB
/
cityThread.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import threading
from sanguo import Sanguo
from EmailSender import EmailSender
import time
import Logger
import argparse
import datetime
import util
import sys
import json
logger = Logger.getLogger()
Sleep_Time = 60 # minutes
City_Id = 'xinye'
Zone_Id = '5'
uid_dict = {}
class CityThread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.daemon = False
def get_city_info(self, cityid, zoneid):
retry = 10
t = 1
while t <= retry:
try:
sanguo = Sanguo()
sanguo.login()
data = sanguo.getCityInfo(cityid, zoneid)
sanguo.close()
if not data:
logger.error('get_city_info failed')
raise Exception()
else:
return data
except:
time.sleep(2)
t += 1
def run(self):
first_time = True
logger.info('CityThread start, cityid=%s, zoneid=%s'%(City_Id, Zone_Id))
while True:
city_info = self.get_city_info(City_Id, Zone_Id)
users = city_info['users']
logger.info('Get %d users'%(len(users)))
if not first_time:
# check new user
for user in users:
userId = user['userId']
userName = user['userName']
level = user['level']
if not uid_dict.has_key(userId):
msg = 'Found new user name=%s level=%s'%(userName, level)
logger.info(msg)
es = EmailSender()
es.send_mail(msg, '')
es.close()
else:
first_time = False
for user in users:
userId = user['userId']
uid_dict[userId] = user
logger.info('CityThread will sleep %d seconds'%(Sleep_Time))
time.sleep(Sleep_Time)
def parsearg():
global Sleep_Time, City_Id, Zone_Id
parser = argparse.ArgumentParser(description='upgrade keji')
parser.add_argument('-s', '--sleep', required=False, type=int, default=14, help='the time will sleep in each round, in minutes')
parser.add_argument('-c', '--cityid', required=False, type=str, default='xinye', help='city name')
parser.add_argument('-z', '--zoneid', required=False, type=str, default='5', help='zone id')
res = parser.parse_args()
Sleep_Time = res.sleep * 60
City_Id = res.cityid
Zone_Id = res.zoneid
if __name__ == '__main__':
parsearg()
thread = CityThread()
thread.start()