2017-09-01 3 views
1

私はまったく同じロジックのメソッドにする必要があります。唯一の違いは、異なる値を返すことです。コルーチンまたはdict(オブジェクト)を返す方法は?

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 

これを一般化するにはどうすればよいですか?あなたがstore_item結果の種類を知っていれば

+0

をあなたが「動作しない」とはどういう意味ですか?依存関係のないバージョンの関数を提供した場合にも役立ちます。そうすれば、他のユースケースを一般化することがはるかに簡単になります。 :) – MSeifert

+0

@MSeifert私は 'コルーチンはありません'それは '真'と 'dictはありません'それは本当ですので、私はいつも 'yield store_item'を返します – petrush

+0

@MSeifert更新の質問 – petrush

答えて

1

さて、あなたは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 
関連する問題