{"id":162897,"date":"2020-10-02T08:19:42","date_gmt":"2020-10-02T00:19:42","guid":{"rendered":"http:\/\/4563.org\/?p=162897"},"modified":"2020-10-02T08:19:42","modified_gmt":"2020-10-02T00:19:42","slug":"tornado-%e5%af%ae%e5%82%9b%ee%84%9e%e9%97%88%e7%82%ba%e6%a8%86%e6%bf%89%e7%82%b4%e7%9c%b0%e7%91%99%ef%bd%86%e6%99%b3","status":"publish","type":"post","link":"http:\/\/4563.org\/?p=162897","title":{"rendered":"tornado \u5bee\u509b\ue11e\u95c8\u70ba\u6a06\u6fc9\u70b4\u7730\u7459\uff46\u6673"},"content":{"rendered":"<div>\n<div>\n<div>\n<h1>                  tornado \u5bee\u509b\ue11e\u95c8\u70ba\u6a06\u6fc9\u70b4\u7730\u7459\uff46\u6673               <\/h1>\n<p> <\/p>\n<div>\n<div> <span>\u8cc7\u6df1\u5927\u4f6c : vhysug01 <\/span>  <span><i><\/i> 1<\/span> <\/div>\n<div> <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div isfirst=\"1\"> <\/p>\n<pre><code> class Handler:   def get(self):   res_a = self.get_a(*args)   res_b = self.get_b(*args)  # =&gt; cost 1s   self.write({\"res\": res_a + res_b})   def get_a(self, *args):   res = {}   a1 = self.get_a1(*args)  # =&gt; cost 2s   a2 = self.get_a2(*args)  # =&gt; cost 3s   res.update(a1)   res.update(a2)   return res   def get_b(self, *args):   pass  <\/code><\/pre>\n<p>\u941c\u677f\u6e6a tornado \u6d60\uff47\u721c\u93c4\ue21d\u7e56\u6d94\u581c\u91dc\u5a34\u4f7a\u25bc\u951b\u5c7d\u5691\u6d93\ue047\u769f\u9422\u3128\u20ac\u6941\u6902\u9428\u52ec\u67df\u5a09\u66ea\u7d1d\u95ae\u82a5\u69f8 io \u95c2\ue1c0\ue57d\u951b\u5823\ue1f0 es\u951b\u5c7c\u7b16\u6d93\u5d85\u5f72\u9473\u85c9\u7568\u7441\u546d\u7d13\u59dd\u30e7\u6b91 es \u7039\u3221\u57db\u7ed4\ue21a\u5bd8\u951b\u591b\u7d1d\u6769\u6b11\ue752\u93af\u546d\u558c\u6d93\u5b36\u7d1d\u93c1\u7fe0\u91dc\u93c8\u5d85\u59df\u93ac\u0446\u5158\u9417\u7470\u57c6\u6d63\u5eaf\u7d1d\u9422?async \u7441\u5474\u30b0\u9470\u6941\u6902\u9351\u82a5\u669f\u951b\u5c7c\u7d7e\u93c4\ue219\u7bc3\u935a\u52ed\ue752\u93b6\u30e9\u654a\u951b\u5c7e\u75c5\u93c8\u590b\u58d8\u9352\u62cc\u0412\u9350\u51b2\u59d9\u5a09\u66d8\u20ac\u509c\u7d89\u6d93\u5a44\u6e45 asyncio\u951b\u5b94xecutor \u6d94\u71b8\u69f8\u5a0c\u2103\u6e41\u6fb6\u5bf8\u534e\u951b\u5c7d\u6d1c\u6d93?get_a \u93c2\u89c4\u7876\u951b\u5c7d\ue6e7\u93cb\u6ec6\u6363\u6fb6\u6c31\u568e\u7ecb\u5b36\u7d1d\u6434\u65c7\ue1da\u9359\ue219\u4e92\u6dc7\u6fca\u7609 3s \u704f\u8fab\u7e51\u9365\u70c7\u7d1d\u9470?get \u9351\u82a5\u669f\u951b\u5c7e\u20ac\u8bf2\u53e1\u6d94\u71b8\u69f8\u9359\ue219\u4e92 3s \u704f\u8fab\u7e51\u9365\u70b5\u6b91\u951b\u5c7d\u5bd8\u93b7\ue100\u7d13\u59dd\u30e5\ue179\u93b4\u98ce\ue06c\u6d94\u71b6\u7af4\u93cd\u67ab\u20ac\u509c\u5e47\u9366\u3128\u7e56\u6d94\u581c\u7af4\u9350\u6b19\u7d1d\u6fb6\u6c33\u20ac\u6944\u5782\u6d5c?1 \u934a\u5d87\u6b91\u93c3\u5815\u68ff&#8230;<\/p>\n<p>\u93b5\u20ac\u6d60\u30ef\u7d1d\u6fb6\u0442\u6d46\u6d60\ue101\u6e41\u6d60\u20ac\u6d94\u5823\u0412\u9350\u866b\u67df\u5a09\u66da\u7b9e\u951b\u5c7e\u57a8\u9470\u546e\u657c\u942a\u5b2a\u6462\u93c2\u5f52\u6f70\u942d\u30e8\u7611\u6d94\u582c\u7d1d\u59f9\u509a\u61a1\u942d?\u9983\u69c0<\/p>\n<p>\u6d60\u30e4\u7b05\u6d93\u70d8\u59e4\u95bf\u6b13\u68f6\u68f0\u6a3c\u6b91\u6d60\uff47\u721c\u9359\u5a43\u59e4\u95bf?\/p> <\/p>\n<pre><code> class Handler:   async def get(self):   res_a = await self.get_a(*args)   res_b = self.get_b(*args)  # =&gt; cost 1s   self.write({\"res\": res_a + res_b})   async def get_a(self, *args):   res = {}   a1 = await self.get_a1(*args)  # =&gt; cost 2s   a2 = self.get_a2(*args)  # =&gt; cost 3s   res.update(a1)   res.update(a2)   return res   async def get_a1(self):   res = await ...   return res   def get_b(self, *args):   pass  # Error # object list can't be used in await expression \u951b?<\/code><\/pre>\n<\/p><\/div>\n<div> <b>\u5927\u4f6c\u6709\u8a71\u8aaa<\/b> (<span>11<\/span>)        <\/div>\n<div> <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<ul>\n<li data-pid=\"3546613\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u8cc7\u6df1\u5927\u4f6c : neoblackcap <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             \u6d63\u72b2\u6093\u59dd?IO \u9428\u52ec\u6437\u6d63\u6ed0\u7d1d\u95ad\uff44\u7b9e\u704f\u8fa8\u6581\u9366\u3127\u568e\u7ecb\u5b2b\u775c \/\u6769\u6d9a\u25bc\u59f9\u72bb\u5677\u95c8\u3223\u7a87\u951b\u5c83\u7a87\u7039\u5c83\u7e51\u9365\u70b5\u7ca8\u93cb\u6ec3\u6c28\u9359\ue219\u4e92\u6d5c\u55d0\u20ac\u509b\u7223\u9351\u55d7\u7c31\u95b2\u5c84\u6f70\u93c4\ue21b\u6e41\u9429\u7a3f\u53e7\u9428\u52ee\u7ddf\u9354\u2541\u56b1\u93c1\u626e\u6b91\u951b\u5c7c\u7d98\u9358\u8364\u6e45\u942a?asyncio \u95b2\u5c84\u6f70\u9428\u52ec\u6783\u5997\uff43\u20ac?br \/>tornado \u93c4\ue21a\u540b\u7039?asyncio \u9428\u52f6\u7d1d\u6d63\u72b5\u6d3f\u93ba\u30e7\u6564\u704f\u535e\u30bd\u6d5c?\/div> <\/td>\n<\/tr>\n<\/table><\/div>\n<\/p><\/div>\n<\/li>\n<li data-pid=\"3546614\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u4e3b<\/span> <span>\u8cc7\u6df1\u5927\u4f6c : vhysug01 <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             @neoblackcap \u6fc2\u754c\u6b91\u951b\u5c7e\u579c\u9358\u8364\u7095\u7f08\u7ed8\u6783\u5997?\/div> <\/td>\n<\/tr>\n<\/table><\/div>\n<\/p><\/div>\n<\/li>\n<li data-pid=\"3546615\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u8cc7\u6df1\u5927\u4f6c : shuax <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             run_in_executor                                                            <\/div>\n<\/p><\/div>\n<\/li>\n<li data-pid=\"3546616\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u8cc7\u6df1\u5927\u4f6c : ruanimal <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             \u6d63\u72b2\u7df1\u6dc7\u6fca\u7609\u6d63\u72b5\u6564\u9428?es \u6434\u64b4\u69f8\u93c0\ue21b\u5bd4\u5bee\u509b\ue11e\u93b5\u5d88\ue511                                                            <\/div>\n<\/p><\/div>\n<\/li>\n<li data-pid=\"3546617\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u8cc7\u6df1\u5927\u4f6c : xulolololololo <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             \u6d63\u72bb\u5158\u9422\u3125\u7d13\u59dd\u30e5\u5d17\u7ecb\u5b2b\ue50b\u93cb\u6735\u7c21\u951b\u5c83\u7e55\u9422\u3125\u6093\u59dd\u30e7\u6b91 client\u951b\u5c7e\u5142\u935f\u30e5\u61bf\u951b\u5b94s\u951b\u5baeysql, redis \u95ae\u82a5\u6e41\u5bee\u509b\ue11e\u9428\u52eb\u7c31\u7441\u546c\u7c21\u9422\u3128\u6363\u93c9\u30e5\u6c28\u7039\u5c7c\u7c28                                                            <\/div>\n<\/p><\/div>\n<\/li>\n<li data-pid=\"3546618\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u4e3b<\/span> <span>\u8cc7\u6df1\u5927\u4f6c : vhysug01 <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             @xulolololololo \u9350\u546f\u7d89\u951b\u5c7c\u7b09\u9473\u82a5\u67ca\u7441\u546d\u5bd8\u951b\u5c84\ue56b\u7035\u95f4\u7b09\u935a\u5c7e\u5270\u951b\u5c7e\u5285\u7459\u590c\u6564 tornado \u9357\u7535\u6564\u5a0c\u2103\u6e41\u951b\u5c7c\u7af4\u9410\u572d\u58d2\u93ac\u0445\u6564\u6d93\u5d84\u7b02 \u9983\u69c0                                                            <\/div>\n<\/p><\/div>\n<\/li>\n<li data-pid=\"3546619\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u8cc7\u6df1\u5927\u4f6c : LukeChien <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             handler \u95b2\u5c84\u6f70 yield \u93b8\u509d\u6363\u951b\u5c80\u74d1\u5bf0\u546f\u568e\u7ecb\u5b2b\u775c\u95b2\u5c80\u6b91 es \u7039\u3221\u57db\u7ed4\ue21d\u7e51\u9365\u70c7\u7d1d\u6d93\u5d85\u5956\u935d\u5d85\u53fe\u6d60\u682c\ue1ec\u59f9\u509c\u6b91\u6fb6\u52ed\u608a \u9359\u509d\u20ac\u51a9\u6783\u7ed4\u72c5\u7d30 https:\/\/www.cnblogs.com\/terencezhou\/p\/7615572.html                                                            <\/div>\n<\/p><\/div>\n<\/li>\n<li data-pid=\"3546620\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u4e3b<\/span> <span>\u8cc7\u6df1\u5927\u4f6c : vhysug01 <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             @LukeChien \u9983\u61a4                                                            <\/div>\n<\/p><\/div>\n<\/li>\n<li data-pid=\"3546621\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u8cc7\u6df1\u5927\u4f6c : ruanimal <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             @vhysug01 \u7ec2\u8364\u568e\u6d93\u5b2d\u6d47\u7039\u590e\ue5ca\u935f\u5a4f\u7d1d\u9473\u754c\u6564\u6434\u64b9\u0412\u9350\u5d07\u6b91\u95c2\ue1c0\ue57d\u951b\u5c7c\u8d1f\u935f\u30e5\u59e9\u6d60\uff47\u721c\u9286?\/div> <\/td>\n<\/tr>\n<\/table><\/div>\n<\/p><\/div>\n<\/li>\n<li data-pid=\"3546622\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u8cc7\u6df1\u5927\u4f6c : xulolololololo <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             \u5be4\u9e3f\ue185\u93b9\u3220\u53d5\u9359?\/div> <\/td>\n<\/tr>\n<\/table><\/div>\n<\/p><\/div>\n<\/li>\n<li data-pid=\"3546623\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u4e3b<\/span> <span>\u8cc7\u6df1\u5927\u4f6c : vhysug01 <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             @xulolololololo \u93c6\u6751\u59cf\u7459\uff45\u5585\u5a09?\/div> <\/td>\n<\/tr>\n<\/table><\/div>\n<\/p><\/div>\n<\/li>\n<li>\n","protected":false},"excerpt":{"rendered":"<p>tornado \u5bee\u509b\ue11e\u95c8\u70ba\u6a06\u6fc9\u70b4\u7730&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[],"tags":[],"_links":{"self":[{"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/posts\/162897"}],"collection":[{"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/4563.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=162897"}],"version-history":[{"count":0,"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/posts\/162897\/revisions"}],"wp:attachment":[{"href":"http:\/\/4563.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=162897"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/4563.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=162897"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/4563.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=162897"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}