tornado 寮傛闈為樆濉炴眰瑙f晳
資深大佬 : vhysug01 1
class Handler: def get(self): res_a = self.get_a(*args) res_b = self.get_b(*args) # => cost 1s self.write({"res": res_a + res_b}) def get_a(self, *args): res = {} a1 = self.get_a1(*args) # => cost 2s a2 = self.get_a2(*args) # => cost 3s res.update(a1) res.update(a2) return res def get_b(self, *args): pass
鐜板湪 tornado 浠g爜鏄繖涔堜釜娴佺▼锛屽嚑涓皟鐢ㄨ€楁椂鐨勬柟娉曪紝閮芥槸 io 闂锛堣 es锛屼笖涓嶅彲鑳藉畨瑁呭紓姝ョ殑 es 瀹㈡埛绔寘锛夛紝杩欑鎯呭喌涓嬶紝鏁翠釜鏈嶅姟鎬ц兘鐗瑰埆浣庯紝鐢?async 瑁呴グ鑰楁椂鍑芥暟锛屼絾鏄篃鍚勭鎶ラ敊锛屾病鏈夋壘鍒拌В鍐冲姙娉曘€傜綉涓婄湅 asyncio锛宔xecutor 涔熸槸娌℃湁澶寸华锛屽洜涓?get_a 鏂规硶锛屽鏋滆捣澶氱嚎绋嬶紝搴旇鍙互淇濊瘉 3s 灏辫繑鍥烇紝鑰?get 鍑芥暟锛屾€诲叡涔熸槸鍙互 3s 灏辫繑鍥炵殑锛屽寘鎷紓姝ュ鎴风涔熶竴鏍枫€傜幇鍦ㄨ繖涔堜竴鍐欙紝澶氳€楄垂浜?1 鍊嶇殑鏃堕棿…
鎵€浠ワ紝澶т浆浠湁浠€涔堣В鍐虫柟娉曚箞锛屾垨鑰呮敼鐪嬪摢鏂归潰鐭ヨ瘑涔堬紝姹傚憡鐭?馃槀
浠ヤ笅涓烘姤閿欓棶棰樼殑浠g爜鍙婃姤閿?/p>
class Handler: async def get(self): res_a = await self.get_a(*args) res_b = self.get_b(*args) # => cost 1s self.write({"res": res_a + res_b}) async def get_a(self, *args): res = {} a1 = await self.get_a1(*args) # => cost 2s a2 = self.get_a2(*args) # => 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 锛?
大佬有話說 (11)