我的代码从通道层收到一些消息后,我需要处理一些复杂的逻辑:通过websocket向客户端发送请求,等待响应,发送另一个请求,再次等待,然后通过通道发送回响应。
现在,我发现的唯一方法是将所有逻辑拆分为一堆较小的方法,并使用锁来同步所有逻辑。它正在工作,但看起来很丑。
有可能写类似的东西吗?
async def complex_logic(self, data):
with self.lock.acquire():
await self.send_ws_request1(data)
resp1 = await self.get_ws_response1()
data2 = self.do_something_with_resp(resp1)
await self.send_ws_request2(data)
resp2 = await self.get_ws_response2()
await self.send_resp_to_channels(resp2)