增加日志

pull/23/head
wenxianping 2018-01-24 12:56:18 +08:00
parent 0b3d04ace4
commit 133606f170
8 changed files with 171 additions and 18 deletions

1
.gitignore vendored
View File

@ -1,3 +1,4 @@
*.html
*.pyc
*.yaml
*.log

82
config/configCommon.py Normal file
View File

@ -0,0 +1,82 @@
# -*- coding: utf-8 -*-
import os
import time
saleMinDelayDay = 0
saleMaxDelayDay = 59
saleStartTime = "06:00:00"
saleStopTime = "23:00:00"
rushRefreshMinTimeIntval = 2000
rushRefreshMaxTimeIntval = 3600000
rushRefreshTimeIntval = 100
RS_SUC = 0
RS_TIMEOUT = 1
RS_JSON_ERROR = 2
RS_OTHER_ERROR = 3
def getNowTimestamp():
return time.time()
def getMinimumDate():
return time.localtime(getNowTimestamp() + saleMinDelayDay * 24 * 3600)[:3]
def getMaximumDate():
return time.localtime(getNowTimestamp() + saleMaxDelayDay * 24 * 3600)[:3]
def getMinimumTime():
return [int(x) for x in saleStartTime.split(":")]
def getMaximumTime():
return [int(x) for x in saleStopTime.split(":")]
def decMakeDir(func):
def handleFunc(*args, **kwargs):
dirname = func(*args, **kwargs)
if not os.path.exists(dirname):
os.makedirs(dirname)
elif not os.path.isdir(dirname):
pass
return dirname
return func
def getWorkDir():
return os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
@decMakeDir
def getTmpDir():
return os.path.join(getWorkDir(), "tmp")
@decMakeDir
def getLogDir():
return os.path.join(getTmpDir(), "log")
@decMakeDir
def getCacheDir():
return os.path.join(getTmpDir(), "cache")
@decMakeDir
def getVCodeDir():
return os.path.join(getTmpDir(), "vcode")
def getVCodeImageFile(imageName):
return os.path.join(getVCodeDir(), imageName + ".jpg")
def getCacheFile(cacheType):
return os.path.join(getCacheDir(), cacheType + ".cache")

61
config/logger.py Normal file
View File

@ -0,0 +1,61 @@
#coding: utf-8
import os
import time
import logging
from config import configCommon
logger = None
loggerHandler = None
dateStr = '' #默认拥有日期后缀
suffix = '' #除了日期外的后缀
def setSuffix(s):
global suffix
suffix = s
def getTodayDateStr():
return time.strftime("%Y-%m-%d", time.localtime(configCommon.getNowTimestamp()))
def setDateStr(s):
global dateStr
dateStr = s
def isAnotherDay(s):
global dateStr
return dateStr != s
def getLogFile():
global dateStr, suffix
rtn = os.path.join(configCommon.getLogDir(), dateStr)
if suffix:
rtn += "_" + suffix
return rtn + ".log"
def log(msg, func = "info"):
global logger
if not logger:
logger = logging.getLogger()
logger.setLevel(logging.INFO)
todayStr = getTodayDateStr()
if isAnotherDay(todayStr):
setDateStr(todayStr)
logger.removeHandler(loggerHandler)
fh = logging.FileHandler(getLogFile())
fm = logging.Formatter(u'[%(asctime)s][%(levelname)8s] --- %(message)s (%(filename)s:%(lineno)s)')
fh.setFormatter(fm)
logger.addHandler(fh)
levels = {
"debug": logger.debug,
"info": logger.info,
"warning": logger.warning,
"error": logger.error,
"critical": logger.critical
}
levels[func](msg)

View File

@ -41,10 +41,10 @@
set:
station_dates:
- "2018-01-27"
# - "2018-01-27"
# - "2018-01-28"
# - "2018-02-10"
# - "2018-02-09"
- "2018-02-10"
- "2018-02-09"
station_trains:
- "G2365"
# - "K4300"
@ -67,25 +67,25 @@ set:
12306count:
# - uesr: ""
# - pwd: "apple1995"
- uesr: "@qq.com"
- uesr: "931128603@qq.com"
- pwd: "QWERTY"
select_refresh_interval: 0.1
expect_refresh_interval: 0.3
select_refresh_interval: 0.5
expect_refresh_interval: 0.1
ticket_black_list_time: 3
is_aotu_code: False
is_aotu_code: True
aotu_code_type: 2
#enable_proxy: False
damatu:
uesr: ""
uesr: "931128603"
pwd: "qazWSX1995"
email_conf:
is_email: False
email: "@qq.com "
notice_email_list: "@qq.com"
username: ""
is_email: True
email: "931128603@qq.com "
notice_email_list: "61995120@qq.com"
username: "931128603"
password: "xwopwxbkupbqbfgb"
host: "smtp.qq.com"

View File

@ -44,7 +44,7 @@ class GoLogin:
print ("下载验证码...")
codeimgUrl = code_url
img_path = './tkcode'
result = self.httpClint.send(codeimgUrl)
result = self.httpClint.send(codeimgUrl, is_logger=False)
try:
open(img_path, 'wb').write(result)
if self.is_aotu_code:

View File

@ -5,7 +5,9 @@ import socket
from time import sleep
import requests
import sys
from config import logger
class HTTPClient(object):
@ -76,7 +78,7 @@ class HTTPClient(object):
self._s.headers.update({"Referer": referer})
return self
def send(self, url, data=None, **kwargs):
def send(self, url, data=None, is_logger=True, **kwargs):
"""send request to url.If response 200,return response, else return None."""
allow_redirects = False
error_data = {"code": 99999, "message": "重试次数达到上限"}
@ -86,6 +88,8 @@ class HTTPClient(object):
else:
method = "get"
self.resetHeaders()
logger.log(
u"url: {0}\n入参: {1}\n请求方式: {2}\n".format(url,data,method,))
for i in range(10):
try:
response = self._s.request(method=method,
@ -95,10 +99,15 @@ class HTTPClient(object):
allow_redirects=allow_redirects,
**kwargs)
if response.status_code == 200:
if response.content:
return json.loads(response.content) if method == "post" else response.content
else:
return error_data
if response.content:
if is_logger:
logger.log(
u"出参:{0}".format(response.content))
return json.loads(response.content) if method == "post" else response.content
else:
logger.log(
u"url: {} 返回参数为空".format(url))
return error_data
else:
sleep(0.1)
except (requests.exceptions.Timeout, requests.exceptions.ReadTimeout, requests.exceptions.ConnectionError):

BIN
tkcode

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

0
tmp/__init__.py Normal file
View File