私は複数の構成でライブラリを持つアプリケーションている:現在、私はコードのことを非同期、トルネードコルーチン、または標準の関数呼び出しを一般化する方法は?
- Python2.7ネイティブ
- Python2.7竜巻
- Python3.5
asyncioを持っています3つすべてに対してほぼ同じですが、各関数呼び出しの呼び出し方法には若干の違いがあります。これは私が多くの場所で、次のようなものを持っているので、私は、コードの重複のトンを持っていることを意味:
client
はそれぞれネイティブのpython、asyncio、と竜巻をサポートする、言語固有の実装です
#Python2.7native.py
def main(client):
client.foo(args)
client.bar(args)
#Python2.7tornado.py
@gen.coroutine
def main(client):
yield client.foo(args)
yield client.bar(args)
#Python3.5asyncio.py
async def main(client):
await client.foo(args)
await client.bar(args)
。 APIメソッド呼び出しは同じです。私は何とか私は、適切に、私は別のファイルにメソッドを定義して使用する方法について考えてきました
さまざまなメソッドを呼び出し、共有ファイルに含めることができる単一のメソッドにこれを一般化することができるように期待しています
getattr
テストを正しく呼び出すことができますが、これは本当に面倒です。
これを行うには良い方法がありますか?
実際には、どのようにcalleであるかを除いて、さまざまなセクションで同じですd、関数のリストを作成し、プラットフォーム固有のランナーがそのリストを反復してそれに応じて呼び出すことができますか? –
問題は ''非同期def''です。私の知る限りでは、2.7の同等物はありません。 Pythonの複数のバージョン間で共有する必要がある場合は、それらの関数の '' gen.coroutine''を選択します。 –