微信公众号第三方平台开发PYTHON教程 PART 9

github地址:cppfun@wechat-open-third-party-dev

这节之前你需要阅读之前的八节内容:
微信公众号第三方平台开发python教程 Part 1
微信公众号第三方平台开发python教程 Part 2
微信公众号第三方平台开发python教程 Part 3
微信公众号第三方平台开发python教程 Part 4
微信公众号第三方平台开发python教程 Part 5
微信公众号第三方平台开发python教程 Part 6
微信公众号第三方平台开发python教程 Part 7
微信公众号第三方平台开发python教程 Part 8
本节我们首先实现异步回应,用什么?当然是线程。

我们来看实现:

class WxThread  ( threading. Thread ):
     def  __init__ ( self , threadID , name ):
         threading. Thread. __init__ ( self )
         self. threadID  = threadID
         self. name  = name

     def run ( self ):
        logger. info (get_time ( )+ 'WxThread HttpResponse("")' )
         return HttpResponse ( '' )

这个代码很简单,我就不解释了。
我们看看如何调用:

         elif Content. startswith ( 'QUERY_AUTH_CODE' ):
             # send_bank_response()
            bank_resp  = WxThread ( 1 ,  "WxThread" )
            bank_resp. start ( )
            query_auth_code  = Content. split ( ':' ) [ 1 ]
            json_file  =  open ( 'com_ticket.json' )
            data  = json. load (json_file )
            json_file. close ( )
             if data [ 'ComponentVerifyTicket' ]  ==  '':
                 return HttpResponse ( 'no ComponentVerifyTicket' )
            ComponentVerifyTicket  = data [ 'ComponentVerifyTicket' ]
            wxOpenSDK  = WxOpenSDK (ticket =ComponentVerifyTicket )
            info  = wxOpenSDK. get_authorization_info (authorization_code =query_auth_code )
            authorizer_access_token  = info [ 'authorizer_access_token' ]
            post_cont  = query_auth_code +  '_from_api'
            post_custom_text_msg (touser =FromUserName ,
                                 content =post_cont ,
                                 stoken =authorizer_access_token )

这样就可以解决异步回复问题。
下面是全网检测的整个代码:

def weixin_check (decrypt_xml , nonce ):
     xml  = etree. fromstring (decrypt_xml )
    ToUserName  =  xml. find ( 'ToUserName' ). text
    FromUserName  =  xml. find ( 'FromUserName' ). text
    MsgType  =  xml. find ( 'MsgType' ). text
     if MsgType  ==  'event':
        event  =  xml. find ( "Event" ). text
        eval_cont  = event+ 'from_callback'
         return send_text_cont (fromu =FromUserName , tou =ToUserName , cont =eval_cont , nonce =nonce )
     elif MsgType  ==  'text':
        Content  =  xml. find ( 'Content' ). text
        logger. info ( 'got the content %s' % Content )
         if Content  ==  'TESTCOMPONENT_MSG_TYPE_TEXT':
            reply_cont  = Content+ '_callback'
             return send_text_cont (FromUserName , tou =ToUserName , cont =reply_cont , nonce =nonce )
         elif Content. startswith ( 'QUERY_AUTH_CODE' ):
             # send_bank_response()
            bank_resp  = WxThread ( 1 ,  "WxThread" )
            bank_resp. start ( )
            query_auth_code  = Content. split ( ':' ) [ 1 ]
            json_file  =  open ( 'com_ticket.json' )
            data  = json. load (json_file )
            json_file. close ( )
             if data [ 'ComponentVerifyTicket' ]  ==  '':
                 return HttpResponse ( 'no ComponentVerifyTicket' )
            ComponentVerifyTicket  = data [ 'ComponentVerifyTicket' ]
            wxOpenSDK  = WxOpenSDK (ticket =ComponentVerifyTicket )
            info  = wxOpenSDK. get_authorization_info (authorization_code =query_auth_code )
            authorizer_access_token  = info [ 'authorizer_access_token' ]
            post_cont  = query_auth_code +  '_from_api'
            post_custom_text_msg (touser =FromUserName ,
                                 content =post_cont ,
                                 stoken =authorizer_access_token )

好了,教程到这里就算结束了,我这几天会把整个代码非商业部分放到github上,方便大家浏览,互相学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值