使用 tornado.gen.Task 并没有获得异步的效果

发布于 2022-09-03 00:01:44 字数 1924 浏览 10 评论 0

  1. 原文连接: http://python.jobbole.com/84944/?utm_source=tuicool&utm_medium=referral#article-comment

  2. 代码

    class AsyncTaskHandler(tornado.web.RequestHandler):

       @tornado.web.asynchronous
       @tornado.gen.coroutine
       def get(self, *args, **kwargs):
           response = yield tornado.gen.Task(self.ping, ' www.cnode.com')
           print 'response', response
           self.finish('hello')
    
       @tornado.gen.coroutine
       def ping(self, url):
           os.system("ping -c 2 {}".format(url))
           return 'after
    
  3. 输出

    Server Software: TornadoServer/4.3
    Server Hostname: 127.0.0.1
    Server Port: 5000

    Document Path: /async/task
    Document Length: 5 bytes

    Concurrency Level: 5
    Time taken for tests: 0.049 seconds
    Complete requests: 5
    Failed requests: 0
    Total transferred: 985 bytes
    HTML transferred: 25 bytes
    Requests per second: 101.39 [#/sec] (mean)
    Time per request: 49.314 [ms] (mean)
    Time per request: 9.863 [ms] (mean, across all concurrent requests)
    Transfer rate: 19.51 [Kbytes/sec] received

  4. 这个输出不对, 同样的代码, 我测试如下

    Concurrency Level: 5
    Time taken for tests: 6.599 seconds
    Complete requests: 5
    Failed requests: 0
    Total transferred: 985 bytes
    HTML transferred: 25 bytes
    Requests per second: 0.76 [#/sec] (mean)
    Time per request: 6599.359 [ms] (mean)
    Time per request: 1319.872 [ms] (mean, across all concurrent requests)
    Transfer rate: 0.15 [Kbytes/sec] received

  5. 哪儿出了问题? 不知道是怎么测试出这个结果的? 想不明白.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

怎言笑 2022-09-10 00:01:44

os.system 是 block 的

Tornado 的 block 是基于网络的异步 IO

要想异步,用 http://www.tornadoweb.org/en/stable/process.html#tornado.process.Subprocess

梦罢 2022-09-10 00:01:44

为什么我使用时老师报错,用的是tornado==6.0.1
'tornado.gen' has no attribute 'Task'

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文