tornado 框架 简单的任务异步化方式
来源:互联网 发布:软件登记在哪里办理 编辑:程序博客网 时间:2024/06/05 23:30
tornado 框架 简单的任务异步化方式
由于项目中存在耗时的查询操作,对应api接口常常被阻塞,影响这一块的并发。所以才有了将其转化为异步缓解并发的想法。
@route(r'/ajax/api_interface_demo', name='ajax_GetAreaTree') # 获取所有地区class ApiInterfaceDemo(BaseHandler): executor = ThreadPoolExecutor(20) @asynchronous @coroutine def get(self): type = self.get_argument('type',None) bi_id = self.get_argument('bi_id', 0) bi_id = int(bi_id) if bi_id else 0 a = yield self.get_all_area(type, bi_id) @run_on_executor def get_all_area(self,type,bi_id): items = Area.select(Area.id.alias('id'), Area.pid.alias('pid'), Area.name.alias('name'), Area.code.alias('code')).dicts() bitems = [item.area_code for item in BlockItemArea.select().where(BlockItemArea.block_item == bi_id)] nodes = [{ 'id': item['id'], 'pId': item['pid'] if item['pid'] else 0, 'name': item['name'], 'data': item['code'], 'target': '_top', 'click': '', 'open': 'false', 'checked': 'true' if item['code'] in bitems else 'false' } for item in items] url = '/admin/store_area_product?sid=1' nodes.insert(0, { 'id': 0, 'pId': -1, 'name': '全部', 'data': '', 'target': '_top', 'click': "pop('全部地域-产品信息', '" + url + "');", 'open': 'true' }) self.write(simplejson.dumps(nodes))
阅读全文
0 0
- tornado 框架 简单的任务异步化方式
- Tornado异步任务的实现
- Tornado异步任务的实现之一
- Tornado异步框架理解
- tornado web异步框架 和 nodejs 的异步对比
- Tornado异步笔记(一)--- 异步任务
- Tornado异步笔记(一)--- 异步任务
- Tornado异步任务的实现(一)——tornado.httpclient.AsyncHTTPClient
- Tornado框架09-异步01
- Tornado框架09-异步02
- Python Web框架Tornado的异步处理代码示例
- tornado实现的简单异步调用的例子
- tornado学习笔记(二):如何在tornado中以异步的方式调用同步函数
- 简单介绍tornado是如何实现异步非阻塞的
- 简单的异步任务AsyncTask
- tornado框架最简单实现
- (二)Web框架-龙卷风Tornado之世界上最简单的Tornado示例
- web简单应用python框架的选择-tornado
- Python 爬虫学习笔记一: requests 模块
- String类replaceAll方法正则替换深入分析
- JIBX的工具使用
- 享元模式防止同一个activity弹出多个提示框
- 反转一个整数
- tornado 框架 简单的任务异步化方式
- Android系统文件目录路径说明
- 【强化学习实践一】格子世界(DP)
- Linux:shell 命令解析器
- 社会我张哥,人狠话不多。
- c语言中static 函数和普通函数的区别?
- C语言之旅(4)const
- Word打印目录或另存为PDF时出现“错误!未定义书签!”的解决办法
- Netflix 微服务架构设计的经验总结!