tornado 框架 简单的任务异步化方式

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值