2017-09-01 56 views
1

我必须使用完全相同的逻辑方法。唯一的区别是它返回不同的值。如何返回协程或字典(某些对象)?

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 

如何概括它?

+0

你是什么意思“不工作”?如果您提供了函数的无依赖版本,这也会很有帮助。这会使其他用例的泛化更容易。 :) – MSeifert

+0

@MSeifert我的意思是'协同程序不是None'这是'true'和'dict不是None'这是真的,所以我总是返回'yield store_item' – petrush

+0

@MSeifert更新问题 – petrush

回答

1

好吧,如果你知道的store_item结果类型,你可以用它代替比较None

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