asyncio에서 아무것도 예약 할 수 없습니다. (Python 3.7.x)
나는 현재 파이썬 3.7.x로 asyncio에서 작업 중이며 정확한 버전이 확실하지 않습니다. 지금은 작업을 예약하려고합니다. 그리고 나는 그것을 영원히 실행하더라도 출력을 얻을 수 없습니다. 현재 가지고있는 코드는 다음과 같습니다.
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))
이로 인해 다음 오류가 발생합니다.
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'
의 전화 뒷면 call_later()입니다 print_now 난 그냥 해봤 print_now그리고 print_now()나는 또한 사용하여 시도 loop.run_forever()대신에 loop.run_until_complete() 지금까지 난 아무것도하지 않았다
때때로 출력이 없거나 다른 오류가 발생합니다.
답변
첫째, 네, 당신은 delay인수를 놓치고 있습니다. 첫 번째는 지연이고 두 번째는 콜백 ( docs )입니다.
loop.call_later(delay, callback, *args, context=None)
둘째, 콜백은 함수 여야합니다. 당신이 통과 print_now()하는 것은 평가할 것 None입니다. 당신은 그것을 알 수 있습니다
'NoneType'개체를 호출 할 수 없습니다.
따라서 print_now괄호없이 콜백으로 전달해야합니다 . 이런 식으로 응용 프로그램의 결과 대신 함수를 전달합니다.
셋째, async기능이 await활성화 되어야 합니다. 귀하의 시나리오에는 필요하지 않은 것 같으므로 async키워드를 삭제하십시오 .
awaitable 함수를 호출하면 새로운 코 루틴 객체를 생성합니다. 함수 내부의 코드는 함수를 기다리거나 작업으로 실행할 때까지 실행되지 않습니다.
에서 이 게시물 . 확인하고 싶을 수도 있습니다.