글쎄 파이썬에서 비동기를 처음 사용했습니다. asyncio.start_server
호출을 사용하여 서버를 만들고 있는데 문제는 동일한 루프를 두 번 실행하고 처음으로 서버를 작성/시작하는 것입니다. loop.run_until_complete
을 호출하고 그 후에 loop.run_forever
을 호출합니다. 여기 내가 사용하는 코드.파이썬 asyncio 이벤트 루프. 비동기 작업을 완료 한 후 영원히 루프를 실행하십시오.
if __name__ == '__main__':
loop = asyncio.get_event_loop()
sv_wrapper = ServerWrapper(
host='localhost',
port=5003
)
loop.run_until_complete(sv_wrapper.create())
print(repr(sv_wrapper.server))
loop.run_forever()
(Full code example)
솔직히 내가 loop.run_forever()
마지막 호출을 얻을하지 않습니다 는 호출을 실행 같은 이벤트 루프, 또는 새로운 이벤트 루프에 asyncio.start_server
실행에 드 작성된 서버는 내부적으로 생성 하는가?
새로운 이벤트 루프가 내부적으로 생성 된 경우, 프로세스 실행을 유지하는 것만으로도 충분할 수 있습니다 (물론 생성 된 Server에 대한 참조가 있음).
전혀 이해할 수 있는지 모르겠지만 서버 자체가 루프 (향후 작업으로 들어오고 나가는 연결을 관리) 인 경우 loop.create_task
으로 작업을 푸시 할 수 있습니까?
나는 특정 문제가 발생하지 않았으며 그것에 대해 유감스럽게 생각합니다. 나는 nodejs 배경에서 왔고, 파이썬에서 비동기를 얻는 것이 더 쉬울 거라고 생각했다. 도움을 주셔서 감사하며, 어떤 엑스트라도 잘받을 것이다!