python微信公衆番号access_tokenの取得
2165 ワード
redis access_token, 1 ( access_token , time.time() access_token (2 ), , )
#-*- coding: utf-8 -*-
# filename: basic.py
import urllib
import time
import json
import httplib
from django.core.cache import cache
logger = LOGHandler.getlogger()
class Basic:
def __init__(self):
self.__accessToken = ''
self.__leftTime = 0
def __real_get_access_token(self):# access_token
try:
logger.debug(' access')
appId = 'your appid'
appSecret = 'your appSecret'
postUrl = ("http://api.weixin.qq.com/cgi-bin/token?grant_type="
"client_credential&appid=%s&secret=%s" % (appId, appSecret))
logger.debug(postUrl)
urlResp = urllib.urlopen(postUrl).read()
logger.debug(urlResp)
urlResp = json.loads(urlResp)
logger.debug(urlResp['access_token'])
self.__accessToken = urlResp['access_token']
self.__leftTime = urlResp['expires_in']
logger.debug(' access_token')
except Exception, e:
logger.debug(e.message)
def get_access_token(self):
if self.__leftTime < 10:
try:
if cache.has_key('access_token'):
self.__accessToken = cache.get('access_token')
logger.debug(self.__accessToken)
else:
self.__real_get_access_token()
cache.set('access_token', self.__accessToken, 60 * 60)
logger.debug(self.__accessToken)
except Exception,e:
logger.debug(e)
return self.__accessToken
def run(self):
while(True):
if self.__leftTime > 10:
time.sleep(2)
self.__leftTime -= 2
else:
self.__real_get_access_token()
#
bc = Basic()
accessToken = bc.get_access_token()
logger.debug(accessToken)