Tôi đang gặp sự cố khi tìm hiểu cách chuyển một tác vụ mới sang vòng lặp sự kiện đã chạy.hiểu asyncio đã chạy vòng lặp mãi mãi và các tác vụ đang chờ xử lý
Mã này:
import asyncio
import logging
@asyncio.coroutine
def blocking(cmd):
while True:
logging.info("in blocking coroutine")
yield from asyncio.sleep(0.01)
print("ping")
def main():
logging.info("in main funciton")
loop = asyncio.get_event_loop()
logging.info("new loop created")
logging.info("loop running forever")
loop.run_forever()
asyncio.async(blocking("ls"))
logging.basicConfig(level = logging.INFO)
main()
Thay đổi run_forever()
để run_until_complete(asyncio.async(blocking("ls"))
hoạt động tốt. Nhưng tôi thực sự bối rối - tại sao tôi không thể bỏ qua một nhiệm vụ trên vòng lặp đã chạy?