Asyncio'da hiçbir şey planlanamıyor. (Python 3.7.x)
Şu anda python 3.7.x ile asyncio üzerinde çalışıyorum, tam sürümden emin değilim, şu anda bir görev planlamaya çalışıyorum. Ve bir şeyi sonsuza kadar çalıştırırken bile bir çıktı alamıyorum. İşte şu anda sahip olduğum kod
import asyncio
async def print_now():
print("Hi there")
loop = asyncio.get_event_loop()
loop.call_later(print_now())
loop.run_until_complete(asyncio.sleep(1))
Bu, aşağıdaki hatayı verir:
Traceback (most recent call last):
File "D:\Coding\python\async\main.py", line 7, in <module>
loop.call_later(print_now())
TypeError: call_later() missing 1 required positional argument: 'callback'
Geri arama call_later(), print_now sadece denedim print_nowve yerine print_now()kullanmayı denedim ve şimdiye kadar hiçbir şey alamadımloop.run_forever()loop.run_until_complete()
Bazen ya hiç çıktı alıyorum ya da farklı bir hata alıyorum.
Yanıtlar
Birincisi, evet, bir delaytartışmayı kaçırıyorsunuz . Birincisi gecikme, ikincisi geri arama ( docs ).
loop.call_later(delay, callback, *args, context=None)
İkincisi, geri aramanın bir işlev olması gerekiyor. Geçtiğin şey print_now(), değerlendirecek olan şey None. Bunu öğrenebilirsin
'NoneType' nesnesi çağrılabilir değil
Yani print_nowparantez olmadan geri arama olarak geçmeniz gerekecek . Bu şekilde, uygulamasının sonucu yerine bir işlevi geçirmiş olursunuz.
Üçüncüsü, asyncfonksiyonların awaitüzerine yazılması gerekiyor . Senaryonuzun buna ihtiyacı yok gibi görünüyor, bu yüzden sadece asyncanahtar kelimeyi bırakın .
Beklenebilir bir işlevi çağırdığınızda, yeni bir koroutin nesnesi oluşturursunuz. İşlevin içindeki kod, siz işlevi beklemeden veya bir görev olarak çalıştırana kadar çalışmayacaktır.
Gönderen bu yazı . Kontrol etmek isteyebilirsin