TCP クライアント/サーバー システムのラッパーとして単純なコマンド ライン クライアントを作成しようとしています。クライアントは、フレームワークを使用して Python で記述されていtwisted
ます。インタプリタとして Python3.6 を使用しています。prompt_toolkit
に実装があることがわかりasyncio
、サンプル コードを使用して、 を使用してねじれたシステムに接続しようとしましたensureDeferred
。残念ながら、コードはプロンプトが表示されるとすぐに例外をスローします。
Pythonでasyncioライブラリツールを使用するのは初めてなので、何か不足しているかどうかわかりません。実行しようとしたコードは次のとおりです。
from twisted.internet import reactor
from twisted.internet.defer import ensureDeferred
from prompt_toolkit import prompt_async
async def my_coroutine():
while True:
result = await prompt_async('Say something: ', patch_stdout=True)
print('You said: %s' % result)
d = ensureDeferred(my_coroutine())
reactor.run()
スローされる例外は次のとおりです。
AssertionError: yield from wasn't used with future
これが twisted と asyncio の間の根本的な非互換性なのか、それともこれら 2 つのシステムを接続するための重要な方法が欠落しているのかはわかりません。アドバイスをいただければ幸いです。
バージョンの詳細:
twisted == 17.9.0
prompt_toolkit == 1.0.15