0

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
4

1 に答える 1