2016-04-19 27 views
0

toy scriptはasyncio-認識していない、と明らかに動作していない実装に依存しているクラスを使用してアプリケーションを示しています。非同期ライブラリから非同期呼び出しを行う?

どうMyFetcherのフェッチ方法はまだFetcherAppの_internal_validator方法との契約を維持しながら、asyncio対応クライアントを使用して、実施されるのでしょうか?非常に明確にするために、FetcherAppとAbstractFetcherは変更できません。

+0

同期アプリケーションで非同期ライブラリを使用する際のポイントは何ですか? – Vincent

+0

それは逆ですが、それが明確でない場合は申し訳ありません。私の場合は、https://github.com/idan/oauthlibとaiohttp.webを統合することを検討しています。モジュールには、実装する必要があるRequestValidatorクラスがあり、実装をライブラリに渡します。私は玩具のスクリプトでこれを説明するために最善を尽くしました。それは、RequestValidatorで非同期操作を使用することまですべて沸かせます。 – c0dem4gnetic

+0

[aioauth-client](https://github.com/klen/aioauth-client)を調べましたか? – Vincent

答えて

1

fetch内でasync fetch_data関数を使用するには、fetchis_fetched_data_validの両方の関数も非同期でなければなりません。親を変更せずに子クラスでそれらを変更することができます:

+0

これを見て、私は "密封"モジュールのすべてのメソッドを本質的に再実装する必要があるのを見ていますか?のように、モジュールをasyncioに合わせて移植しますか? – c0dem4gnetic

+1

@ c0dem4gnetic "すべてのメソッドを再実装する" - より具体的には、非同期関数を使用するものだけです。 'async'と' await'は、 'asyncio'モジュールの設計によって明示されるべきです。 'asyncio'に代わるもの:スレッド(' ThreadPoolExecutor')を使うか 'greenlet'(これは非明示的な非同期実行のために設計されています)。 –

+1

@ c0dem4gnetic、もう一つの方法 - 非同期スレッドで最初に実行されるasyncioで同期コードを使用することです。 http://stackoverflow.com/a/33399896/1113207(最後のスニペット)の例をご覧ください。私はそれが現在の仕事のために働くかどうかを正確に伝えることはできません。 –

関連する問題