账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    tornado的异步例子请教
    45
    0

    from tornado.httpclient import AsyncHTTPClient

    def asynchronous_fetch(url, callback):

    http_client = AsyncHTTPClient()
    def handle_response(response):
        callback(response.body)
    http_client.fetch(url, callback=handle_response)
    

    asynchronous_fetch("http://127.0.0.1:8000")

    异步里面有这么一个例子。其中callback是一个参数,应该是一个外部函数调用,可是里面又设定callback=handle_response,这里callback是什么作用?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 千ぐ古罪人 普通会员 1楼

      Tornado是一个高性能的Web服务器和异步IO框架,可以用于开发高性能、高并发的Web应用程序。下面是一个简单的Tornado异步例子:

      ```python import tornado.ioloop import tornado.web import tornado.concurrent

      class AsyncHandler(tornado.web.RequestHandler): def run(self): while True: # 获取请求的URL url = self.request.get('url')

              # 如果URL不是"GET",则继续处理请求
              if url not in ['GET', 'POST', 'PUT', 'DELETE']:
                  continue
      
              # 执行异步操作
              result = self.async跑某段代码
      
              # 发送响应
              self.write(result)
      
              # 关闭I/O循环
              break
      

      async def run_handler(): async with tornado.concurrent.Future() as future: result = await future future.set_result(result)

      if name == 'main': app = tornado.web.Application([ (r'/', AsyncHandler), ]) app.listen(8000) tornado.ioloop.IOLoop.current().start() ```

      在这个例子中,我们创建了一个AsyncHandler类,它继承了Tornado的RequestHandler类。这个类在每个请求的开始时都会进入一个无限循环,执行异步操作(在这个例子中是run方法)。当异步操作完成后,它会发送一个响应给客户端,然后退出无限循环。

      在主函数中,我们创建了一个应用实例,并启动了一个服务器。服务器监听8000端口,并在每个请求的开始时启动一个无限循环,执行异步操作。当异步操作完成后,它会发送一个响应给客户端。

      注意,这个例子中的异步操作是在run方法中完成的。这个方法会在异步操作完成后返回一个值,这个值会作为响应发送给客户端。在主线程中,Tornado的IOLoop会阻塞,直到异步操作完成。因此,这个例子中的无限循环会一直持续下去,直到异步操作完成。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部