私はPythonの初心者です。 asyncioを使用して簡単なスクラッププログラムを作成しました。これが私のコードスニペットです
loop = asyncio.get_event_loop()
task = loop.create_task(conSpi.parse(arguments.url))
value = loop.run_until_complete(asyncio.wait([task]))
loop.close()
返される結果をvalueで出力したい。変数の値を出力するのではなく、次のように出力します。
{<Task finished coro=<ConcurrentSpider.parse() done,
defined at /home/afraz/PycharmProjects/the-lab/concurrentspider.py:28> result=3>}
`
結果のみを取得し、残りを印刷しないようにするにはどうすればよいですか?
最も簡単なアプローチは書くことです
value = loop.run_until_complete(task)
これは、1つのタスクを待機する場合にのみ機能します。複数のタスクが必要な場合は、asyncio.waitを正しく使用する必要があります。完了した先物と保留中の先物を含むタプルを返します。ただし、デフォルトでは、保留中の先物はすべての先物が完了するのを待つため、空になります。
だから何かのような
done, pending = loop.run_until_complete(asyncio.wait( tasks))
for future in done:
value = future.result() #may raise an exception if coroutine failed
# do something with value