Python 如何返回协同程序或dict(某个对象)?
我必须使用完全相同的逻辑来创建方法。唯一的区别是它返回不同的值Python 如何返回协同程序或dict(某个对象)?,python,python-3.x,python-asyncio,Python,Python 3.x,Python Asyncio,我必须使用完全相同的逻辑来创建方法。唯一的区别是它返回不同的值 async def job_pooling(self): message['status'] = Text.NEW.value await self.db.store_alert(..) await self.aws.delete_message(..) yield message async def job_pooling(self): message['status'] = Comme
async def job_pooling(self):
message['status'] = Text.NEW.value
await self.db.store_alert(..)
await self.aws.delete_message(..)
yield message
async def job_pooling(self):
message['status'] = Comment.NEW.value
store_message = await self.db.store_comment(..)
await self.aws.delete_message(..)
yield store_message
如何概括它?好吧,如果您知道
存储项的类型
结果,您可以使用它而不是与无
进行比较:
async def job_pooling(sqs_in, status, store_item, delete_message):
message['status'] = status.NEW.value
item = await store_item(message)
await delete_message(message=message, sqs_url=sqs_in)
if isinstance(item, dict):
yield item
yield message
“不行”是什么意思?如果您提供函数的无依赖版本,这也会很有帮助。这将使它更容易推广到其他用例中。:)@MSeifert我的意思是
coroutine不是None
它是true
并且dict不是None
它是true,所以我总是返回yield store\u item
@MSeifert更新问题您使用Python 3.6吗?为什么要使用收益率
?生成一个值的异步生成器-这是您想要的吗?打印(键入(wait self.db.store\u alert(message))
将打印协同程序
?如果是这样,您可能应该重写store\u alert
:等待时的协同路由应该返回值,而不是另一个协同路由。