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
:等待时的协同路由应该返回值,而不是另一个协同路由。