![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Tornado
宗乐平
这个作者很懒,什么都没留下…
展开
-
Python Web 项目中更改单个照片名称
Python Web项目 文件重命名原创 2022-07-14 13:54:35 · 504 阅读 · 0 评论 -
Python3.6+Tornado6.1+Jsonrpc 示例
Python3.6+Tornado6.1+Jsonrpc 示例上一篇写了关于Python2+Tornado5.1.1 中如何集成jsonrpc,现再记录Python3+Tornado6.1集成jsonrpc方法!1、需要的安装包jsonrpcserver ,pip install jsonrpcserver==3.5.6;jsonrpcclient ,pip install jsonrpcclient==2.6.0;tornado ,pip install tornado==6.1;2、新建原创 2022-05-16 15:09:43 · 437 阅读 · 0 评论 -
Python2+Tornado5.1.1+Jsonrpc 示例
这里写自定义目录标题Python2+Tornado5.1.1+Jsonrpc 示例1、需要的安装包2、新建Server.py(服务端),代码示例3、新建Client.py(客户端),代码示例总结Python2+Tornado5.1.1+Jsonrpc 示例因为项目中需要使用jsonrpc,查找了各种资料并没什么结果,尝试了多种方法之后,终于启动成功,特此记录!1、需要的安装包tornadorpc ,pip install tornadorpc==0.1.1;jsonrpcclient ,pip原创 2022-05-16 14:56:24 · 382 阅读 · 0 评论 -
Python3+Tornado 做消息服务中转功能
1、Tornado中创建一个接受weasync def ws_connect(): """接收L刷卡事件""" # try: async with websockets.connect("ws://" + com.L_addr + ":8972/admin/ws_adevent") as ws: while True: print("尝试接受事件消息") result = await ws.recv()原创 2021-06-01 19:44:43 · 316 阅读 · 0 评论 -
Python3 Tornado 限制 IP在时间段内请求次数
原因:有个接口服务需要限制接口请求次数。处理逻辑:1、新建空列表;2、有IP 访问则记录 IP、时间、次数; eg:[{'192.168.1.124': {'2020-12-08 17:00:33': 10}}, {'192.168.1.125': {'2020-12-08 17:00:33': 9}}]3、判断当前时间和列表中的IP访问时间是否相同: ①、相同则增加访问次数; ②、不同则更改原有的访问时间和次数;4、同一秒访问10次则限制3分钟后再...原创 2020-12-08 17:40:26 · 1114 阅读 · 0 评论 -
Python3 No module named ‘mysql‘
在使用python3 时调用Mysql包时发现报错:No module named 'mysql',特此记录下解决办法。1、安装 pymysqlpip install pymysql2、安装mysql-connector-pythonpip installmysql-connector-python3、在app(类似于Django中的app包文件下的__init__) 的__init__ 中写入import pymysqlpymysql.install_as_MyS...原创 2020-12-07 20:04:30 · 25953 阅读 · 6 评论 -
Tornado+ThreadPoolExecutor+SQLAlchemy(十四)Tornado使用线程池做任务
目的:让所有的关于数据库的操作都使用线程执行问题:1、返回添加成功,但表中没有存在新数据,为什么?答:因为引用的session并没有包裹住Dept实例方法,所以即使添加数据成功,session并没有执行提交方法过程:class DeptHandler(BaseHandler): """部门""" @authenticated_async async def post(self): try: f原创 2020-07-27 19:31:22 · 687 阅读 · 0 评论 -
Tornado+PBKDF2+SQLAlchemy(十三)Tornado修改加密密码
目的:PBKDF2的crypt加密后的密码:$p5k2$2537$onn0HWXp$TJBLhym0V2H/CNqDN04j8d8M28i3igH3过程: 1、表模型#导包from pbkdf2 import cryptclass Userinfo(Base): __tablename__ = 'Userinfo' OprID = Column(TINYINT(3), primary_key=True, autoincrement=True)...原创 2020-05-19 10:39:49 · 308 阅读 · 0 评论 -
Tornado+Layui(十一)Tornado+Layui 前后端分离 前端上传图片+返回图片地址
目的: Tornado 返回图片地址过程: 1、Layui前端上传图片JS //普通图片上传 upload.render({ elem: '#test1' , url: 'http://xx.xx.xx.xx:xxx/api/images' // 上传地址 ...原创 2020-03-25 21:54:52 · 689 阅读 · 0 评论 -
Tornado+Layui(十)Tornado+Layui 前后端分离 登录保存用户名和token
目的: 前端保存token和用户名过程: 1、前端登录JS代码// 请求成功后,写入 access_token layui.sessionData(setter.tableName, { key: "data" , ...原创 2020-03-19 11:54:09 · 1513 阅读 · 0 评论 -
Tornado+Layui(九)Tornado+Layui 前后端分离 头像上传
目的:添加人员信息和头像同时上传过程: 1、Layui头像界面<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>Layui</title> <meta name="renderer" content="webki...原创 2020-03-18 21:50:13 · 1009 阅读 · 0 评论 -
Tornado+Layui(八)Tornado+Layui+WebSocket 前后端分离
目的: 实现Tornado主动推送数据到前端过程: 1、Layui中Websocket的 js代码 //此时的table只是为了渲染表格 table.render({ elem: '#current_time_msg' // table标签的ID , data: [] ...原创 2020-03-11 19:37:12 · 1229 阅读 · 0 评论 -
Tornado+SQLalchemy(七)Tornado中 使用mysql 的存储过程
目的:过程: 1、编写 函数(即存储过程) PS:查询界面运行之后会在Navcat中的函数生成名为:getChildrenOrg 的函数CREATE FUNCTION getChildrenOrg (orgid INT) RETURNS VARCHAR (4000)BEGINDECLARE oTemp VARCHAR (4...原创 2020-03-03 22:07:42 · 598 阅读 · 0 评论 -
Tornado+SQLalchemy(六) SQLAlchemy查询值形成二级联动数据
目的:形成二级联动数据#返回json形式的二级数据{ "code": 0, "msg": "success", "data": { "192.168.1.82": { "val": "192.168.1.82", "item": { "018201": { ...原创 2020-02-26 15:14:07 · 300 阅读 · 0 评论 -
Tornado+SQLalchemy(五) Tornado+JWT的使用
目的:JWT如何使用?过程: ps:这个文件找个文件夹存放,在需要引入的文件导包即可 1、jwt的加密和解密import datetimeimport jwtfrom jwt import exceptionsdef deal_encode_jwt(secret_key): """加密jwt""" data = { 'exp':...原创 2020-02-26 11:51:09 · 354 阅读 · 0 评论 -
Tornado+SQLalchemy(四) SQLalchemy session封装后使用Update
不知道session是怎么封装的,可查看Tornado+SQLalchemy(一) 插入多条数据时,结果只插入一条数据。目的:SQLalchemy 使用update过程: ps:update使用语法 查询(表名).查询条件(表字段==参数).更新({表字段:参数})# 获取参数 c = self.get_argument('CID')CName = sel...原创 2020-02-26 11:44:33 · 1213 阅读 · 0 评论 -
Tornado+SQLalchemy(三) SQLalchemy使用去重+组合----distinct+group_concat
目的:将SQLalchemy查询的多个值去重后拼接过程:#导包 from sqlalchemy import and_, distinctfrom sqlalchemy import funcfrom sqlalchemy import or_ # 多表查询bindusers = session.query(Userinfo.UserID, Userinfo.Us...原创 2020-02-17 15:18:39 · 3220 阅读 · 0 评论 -
Tornado+SQLalchemy(二) 设置表的级联删除
目的:通过接收外键值,可以实现一对多或多对多数据删除过程:表的设计 # 主表只需要设置所需字段class UserInfo(Base): __tablename__ = 'base_userinfo' ID = Column(Integer, primary_key=True, autoincrement=True) worknum = Colu...原创 2020-01-14 13:38:38 · 278 阅读 · 0 评论 -
Tornado+SQLalchemy(一) 插入多条数据时,结果只插入一条数据
1、目的:一个学生拥有多张卡学生表:卡号表:2、出现问题: 多值插入只插入了一条值3、过程①、先将SQL alchemy 的session封装成上下文形式# 使用上下文管理器封装session的建立和关闭,这样就不用手动关闭session@contextmanagerdef session_maker(session=session1)...原创 2020-01-08 11:32:37 · 1179 阅读 · 0 评论 -
Tornado初学篇(二) 手动创建服务器而不是使用Application实例化后的app.listen()创建
一、注释app.listen()二、导入 tornado.httpserverimport tornado.webimport tornado.ioloopimport tornado.httpserverclass IndexHandler(tornado.web.RequestHandler): def get(self): self.write('...原创 2019-05-09 09:50:28 · 619 阅读 · 0 评论 -
Tornado初学篇(三) Tornado 单进程与多进程
一、tornado 默认启动的是单进程二、讲tornado改为多进程三、注释 服务器的监听import tornado.webimport tornado.ioloopimport tornado.httpserverclass IndexHandler(tornado.web.RequestHandler): def get(self): self...原创 2019-05-09 10:19:03 · 1834 阅读 · 0 评论 -
Tornado初学篇(四) app.listen() 和多进程 的补充说明及使用自带多线程启动的三个问题
一、app.listen()app.listen()只能在单进程模式中使用二、多进程虽然tornado给我们提供一次性启动多个进程的方式,由于一些问题,不建议使用HTTPServer.start()启动多进程,手动启动多进程,并还能绑定不同的端口三、手动启动相当于在黑屏终端使用Python 文件名,开启多个终端就开启了多个进程,使用手动启动方式会解决以下三个问题3.1、...原创 2019-05-09 11:07:23 · 2038 阅读 · 0 评论 -
Tornado初学篇(五) Tornado.options模块 命令行传参
命令行传参方式不怎么使用,一般使用配置文件传参问题一:当程序是非正常结束时,就可能出现OSError: [WinError 10048] 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。解决方案:打开任务管理器,在进程中找到Python进程,结束(笨方法,且只适用于单进程运行方式下使用)PS:什么叫非正常结束,就是不是通过结束按钮停止程序,程序出错而停止的情况下,再...原创 2019-05-09 11:36:15 · 5282 阅读 · 2 评论 -
Tornado初学篇(五) Tornado.options模块 配置文件传参(普通文件)
普通文件的config也不怎么使用一、首先在文件同级下新建一个名为config的普通文件(Windows下叫文本文件,Linux下叫普通文件)二、打开config文件,输入以下内容三,代码如下import tornado.webimport tornado.ioloopimport tornado.httpserverimport tornado.options...原创 2019-05-09 15:06:54 · 1092 阅读 · 0 评论 -
Tornado初学篇(五) config模块 配置文件传参(模块文件)
最终版本:使用该版本的配置文件一、新建一个名为config.py的普通文件,以模块的形式进行使用 调用时也可以使用字典的方式调用代码如下:# 参数options = { 'port': 8004, 'list': ["goods", "nice", "fuck_off"]}二、server.py文件代码改为:import tornado.webi...原创 2019-05-09 15:38:11 · 1315 阅读 · 0 评论 -
后台处理分页问题(直接处理sql结果集)
因为前端用的layui,其中table有个自带的分页功能,但是需要后端数据配合(就是后端需要个分页器),本人现在用tornado,查了很多,发现是模板语法写法,迫不得已自己构建了一个简单分页器,记录一下!tornado 后端代码:def pagination(page, limit, total, res): ''' 返回切片后的数据 :param page: ...原创 2019-09-02 18:10:03 · 694 阅读 · 0 评论 -
Tornado初学篇(一) 安装Tornado及创建一个简单的项目
一、安装Tornadopip install tornado二、编写一个简单的Tornado项目# tornado.web tornado的基础web框架import tornado.web# tornado 的核心IO循环模块,封装了linux的epoll和BSD的kqueue,是tornado高效的基础import tornado.ioloop#类似于Django中的...原创 2019-05-09 09:37:01 · 1653 阅读 · 0 评论