Python tornado 模块,gen() 实例源码

我们从Python开源项目中,提取了以下5个代码示例,用于说明如何使用tornado.gen()

项目:WeiXinRedPackage    作者:mutexliu    | 项目源码 | 文件源码
def post(self):
        json_body = json.loads(self.request.body.decode('utf-8'))
        token=json_body['token']
        sent = json_body['sent']
        if token != config.token:
            await self.db.add_log("openid","admin time command",self.request.body.decode('utf-8') +"\n"+"token err")
            self.finish('code err')
            return
        config.timeDelay = -1
        await self.notifyTimeServer()
        # sent the remaining redpackage
        if sent:
            print("??????????")
            await tornado.gen.sleep(5)
            print("?????")  
            await sentRemaining()
            self.finish("remaining package sent")
            return
        self.finish("OK")
项目:mediachain-indexer    作者:mediachain    | 项目源码 | 文件源码
def fake_async_decorator(ocls):
    """
    Wrap all non-private methods of a class with the tornado Task decorator.

    Used to simulate the interface of async methods, but with methods that actually block.

    TODO: Test.
    """
    import tornado
    import tornado.gen

    cls = type(ocls.__name__ + 'Async', ocls.__bases__, dict(ocls.__dict__))

    for attr in cls.__dict__:
        if callable(getattr(cls, attr)) and (not attr.startswith('_')):

            def fake(*args, **kw):
                yield tornado.gen.Task(getattr(cls, attr)(*args, **kw))

            setattr(cls, attr, fake)

    return cls
项目:SuperOcto    作者:mcecchi    | 项目源码 | 文件源码
def _server_request_loop(self, delegate):
        try:
            while True:
                conn = CustomHTTP1Connection(self.stream, False,
                                       self.params, self.context)
                request_delegate = delegate.start_request(self, conn)
                try:
                    ret = yield conn.read_response(request_delegate)
                except (tornado.iostream.StreamClosedError,
                        tornado.iostream.UnsatisfiableReadError):
                    return
                except tornado.http1connection._QuietException:
                    # This exception was already logged.
                    conn.close()
                    return
                except Exception:
                    tornado.http1connection.gen_log.error("Uncaught exception", exc_info=True)
                    conn.close()
                    return
                if not ret:
                    return
                yield tornado.gen.moment
        finally:
            delegate.on_close(self)
项目:WeiXinRedPackage    作者:mutexliu    | 项目源码 | 文件源码
def sendRedPackage(self):
        await self.db.add_log(self.openid,"try send RedPackage", "retry_Time :" + str(self.retry))
        url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack"
        strr = generateWXParam(self.openid, self.amount)
        request = HTTPRequest(url = url, method = "POST", body = strr,   client_key="/home/coco/cert/apiclient_key.pem",
            ca_certs="/home/coco/cert/rootca.pem",  client_cert="/home/coco/cert/apiclient_cert.pem")
        client = AsyncHTTPClient()

        try:
            response = await client.fetch(request)
            res = parseWeixin(response.body.decode('utf-8'))
            await self.db.add_log(self.openid,"send RedPackage response", res)
            if res['return_code'] == 'SUCCESS' and res['result_code']=='SUCCESS' :
                config.hasSent[config.turn-1][self.openid] = self.amount/100.0
                await self.db.add_order(self.openid,config.turn,self.amount/100.0,"Sent")
            else :
                config.sendPackageResponseError += 1
                await self.db.add_order(self.openid,config.turn,self.amount/100.0,"NotSent")
        except Exception as e:
            await self.db.add_log(self.openid,"send RedPackage response", "redpackage Callback failed")
            config.sendPackageError += 1
            if(self.retry>1):
                 return
            self.retry += 1;
            delay_time = self.retry*6
            await self.db.add_log(self.openid,"send RedPackage retry", "start sleep: " + delay_time)
            await tornado.gen.sleep(delay_time)  
            await self.db.add_log(self.openid,"send RedPackage retry", "end sleep")
            await self.sendRedPackage()
项目:illyasviel_bot    作者:Sg4Dylan    | 项目源码 | 文件源码
def execute_job(self):
        mode = self.get_argument("mode")
        message = self.get_argument("msg")
        thumb = self.get_argument("thumb")
        # load setting
        pos = config.images_dict[mode][2]
        font_size = config.images_dict[mode][3]
        font_color = config.images_dict[mode][4]
        filename = config.image_path + config.images_dict[mode][5]
        # gen picture
        img = Image.open(filename)
        draw = ImageDraw.Draw(img)
        font = ImageFont.truetype(config.font_path, font_size)
        imgW, imgH = img.size
        textW, textH = draw.textsize(message,font=font)
        # print(textW, textH)
        draw.text(((imgW-textW)/2,pos),message,font_color,font=font)
        # thumb
        if thumb == "1":
            img.thumbnail((300,300),Image.ANTIALIAS)
        # gen file pointer
        img_io = BytesIO()
        img.save(img_io, 'JPEG', quality=100)
        img_io.seek(0)
        # return picture
        return img_io.getvalue()