Python+Tornado开发微信公众号(上)

本教程针对的是已掌握Python语言基本用法并且掌握其任一Web框架的用户。

本教程使用的Python版本为3.5.0, Web框架为Tornado, IDE开发工具为PyCharm,整个开发过程是在Windows环境下测试开发,最终上线部署至centos服务器。

备注:(1) 如果您是python小白,建议参考Python入门教程

(2) 对tornado框架还不熟悉的同学,建议参考Tornado中文文档

本教程整体框架如下:

思维导图如下:

整体项目结构如下:

下面我们正式进入详细的开发流程

一. Python开发环境和项目的初始化搭建

1. 安装python及pip,并配置环境变量,安装tornado框架

Python及pip安装参考教程windows下面安装Python和pip终极教程

(1) 下载Python包并安装 点此下载

(2) 将python配置到系统环境变量

(3) 下载pip包并安装 点此下载

(4) 将pip配置到系统环境变量

(5) 使用pip安装tornado框架 指令为:

2. 选择一款开发Python的IDE

本教程使用的是PyCharm点击下载

附带: PyCharm 2016.2.3专业版注册码

3. 选择一个代码托管平台

本教程使用的是开源中国Git@osc代码托管平台 码云 - 开源中国代码托管平台,请自行注册,并配置账户下的SSH密钥,关于Git的使用,请参考教程 Git教程 - 廖雪峰的官方网站

4. 创建Web项目

使用Tornado搭建项目入口,端口号为8000,项目搭建至完成微信校验所需的基本代码如下:

项目整体目录

为了方便调试,编写了日志管理文件logger_helper.py

备注: 为防止日志输出报错, 请各位同学注意修改日志输出目录为自己定义的文件目录

配置Tornado的url路由规则url.py

基本配置文件run.py

(5) 同步项目文件至Git托管平台

项目入口文件及微信校验文件已编写好,使用Git同步代码至托管平台,接下来需要配置端口映射,使外网能访问到我们的本地项目,便于完成微信服务端校验.

5. 使用花生壳,配置本地测试所需端口映射

微信公众号开发需要配置服务端URL, 验证URL的有效性,这个URL必须以http://或https://开头,分别支持80端口和443端口,我们目前测试阶段都是在自己电脑上测试(本地测试),为了满足不断修改代码能够即时生效, 因此需要一个外网ip端口映射到本地(内网穿透),我本人使用的是花生壳内网穿透服务,下面是花生壳的使用流程:

(1) 花生壳的账户注册 花生壳软件-内网也能用!内网动态域名,注册成功后,会赠送一个免费域名,这个域名同时也配备了一个公网ip

(2) 进入到花生壳管理界面, 选择内网穿透菜单,进入到配置界面

(3) 选择 右边的"编辑"操作,弹出编辑映射面板,在"内网主机"一项,填上自己本地电脑的ip地址,端口填写自己将要创建的web应用端口,我本地项目用的端口号为8000,此处填写8000即可

二. 微信公众号注册及开发模式校验配置

填写完毕后,先启动我们的项目,运行python run.py指令后, 保证我们的服务器是运行着的, 然后点击"提交",如果你是按照以上流程操作的话,会提示提交成功,否则校验失败,需要我们通过日志检查是哪一块出了问题.

(2) 接下来,校验成功后,点击启用,即可激活开发者模式

三.接收关注/取关事件推送和自动回复

1. 接收关注/取关事件推送

wxauthorize.py

以下是在该文件中增加的post方法,用来接收事件推送

2. 自动回复

(1) 同接收关注/取关事件推送消息一样,用户给我们公众号发送消息时,微信公众平台也会推送数据至我们的后台微信校验的接口,在接收到消息后,我们取出自定义的关键字进行匹配,匹配到了就执行自动回复

(2) 微信公众平台也提供了语音识别功能, 将用户发送的语音内容识别转化为文字,发送给我们后台,在使用该功能时需要在接口权限中打开语音识别功能.

wxauthorize.py

以下是在该文件中post方法中增加的一个判断,用来匹配用户文本消息和语音消息中的关键字

本文来自企鹅号 - 全球大搜罗媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张善友的专栏

集中管理远程计算机终端程序

虚拟网络计算 (VNC) 和 Microsoft 远程桌面协议 (RDP) 之类的工具轻松地从您的家庭或办公室中登录到并管理远程计算机。 如果您任务管理多个不同...

2075
来自专栏Pythonista

web service基础知识

<!-- p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px '.PingFang SC'; color: ...

1903
来自专栏王清培的专栏

ElasticSearch大数据分布式弹性搜索引擎使用

阅读目录: 背景 安装 查找、下载rpm包 、执行rpm包安装 配置elasticsearch专属账户和组 设置elasticsearch文件所有者 切换到el...

69010
来自专栏北京马哥教育

用Kibana和logstash快速搭建实时日志查询、收集与分析系统

日志的分析和监控在系统开发中占非常重要的地位,系统越复杂,日志的分析和监控就越重要,常见的需求有: 根据关键字查询日志详情 监控系统的运行状况 统计分析,比如接...

3015
来自专栏bboysoul

搭建一个google镜像站

不知道为什么最近对作镜像网站特别感兴趣,为了改变自己习惯用baidu的坏习惯,我觉得我还是搭建一个谷歌的镜像网站吧,毕竟,百度是垃圾无道德的一家公司

2581
来自专栏kl的专栏

DevOps自动化组件-RUNDECK介绍、开发、部署、使用

RunDeck 是用 Java开发的自动化部署持续集成的工具应用,项目已开源。runDeck的产品属性和jenkis类似。提供web界面和restapi来给用户...

7389
来自专栏Ksher

Kubernetes的服务网格(第4部分):通过流量切换持续部署

翻译人:Ksher,该成员来自云+社区翻译社

3298
来自专栏Ken的杂谈

ZooKeeper集群部署指南

ZooKeeper是一个开源的分布式应用程序协调服务,是Google的Chubby一个开源的实现。ZooKeeper为分布式应用提供一致性服务,提供的功能包括:...

1191
来自专栏编程坑太多

最主流的SSM实现的通用权限管理系统

1732
来自专栏容器云生态

红帽子RHCS套件安装与配置(一)

RHCS提供的三个核心功能  高可用集群是RHCS的核心功能。当应用程序出现故障,或者系统硬件、网络出现故障时,应用可以通过RHCS提供的高可用性服务管理组件...

2795

扫码关注云+社区