Bazı ağ iletişimlerini ayrı bir iş parçacığına devretmek için python coroutine numaralı telefondan ThreadPoolExecutor kullanmak istedim.Execute'dan Geleceği Bekleyin: Gelecek 'beklemek' ifadesinde kullanılamaz
from concurrent.futures import ThreadPoolExecutor
import asyncio
def work():
# do some blocking io
pass
async def main():
executor = ThreadPoolExecutor()
await executor.submit(work)
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
loop.close()
nedenleri hatası:
TypeError: object Future can't be used in 'await' expression
değil Future
nesneleri awaitable Are Ancak, aşağıdaki kodu çalıştırarak? Neden olmadıklarını söylüyor?
await
bir Future
nesnesini executor.submit
aracılığıyla iade edebilir miyim?
Python 3.5.0
DÜZENLEME
executor.submit
kullanma benim kararım değil. Bu dahili olarak requests-futures
gibi çeşitli kütüphaneler tarafından kullanılır. Koroutinlerdeki bu modüllerle birlikte çalışmanın bir yolunu arıyorum. Sen loop.run_in_executor
kullanmalıdır
Neden reddedildiğini bilmiyorum. Bu kesinlikle işe yarıyor. Ancak daha fazla ilgileniyorum * neden * yerine * nasıl *. Ayrıca, dahili olarak kullanan futures-istek kitaplığını kullanıyorum. –
Basit * neden * concurrent.futures.Future'ın beklenmedik olması. Asyncio.Future'ı düşünüyorsunuz. –
Tamam, Gelecek adında farklı türlerimiz var. Bu türler arasında bir dönüşüm var mı? –