2016-07-13 1 views
1

메서드 매개 변수를 사용하지 않고 비동기 메서드 호출에서 다른 메서드로 컨텍스트를 전달할 수 있습니까?파이썬 3.5에서 비동기 메서드 호출간에 컨텍스트를 전달하는 방법은 무엇입니까?

로그 메시지를 일종의 흐름 ID로 보완하여 특정 호출 방법 흐름의 모든 로그 메시지를 쉽게 추적 할 수있는 기능이 필요합니다.

저는 파이썬의 비동기를 사용하고 키워드 (Python 3.5.x)를 기다리고 있습니다.

답변

0

맞춤 설정하여 문제를 해결했습니다. task factory 작업 당 컨텍스트 (비동기 호출 당 컨텍스트와 비교할 때)가 충분하다는 것이 밝혀졌습니다.

+0

흥미 롭군요, 그것에 대해 몰랐습니다 :) – argaen

1

파이썬 3.7에 도입 된 Context Variables을 사용하고 파이썬 < 3.7에 대한 폴리 필을 aiocontextvars으로 사용해야합니다.

이전 대답은 :

당신은 tasklocalsaiolocals에서 살펴 봐야 할 수 있습니다.

+0

두 프로젝트의 문서는 유망 해 보입니다. – rwitzel

+0

좀 더 효율적인 "타스크"구현을 제공하는 타사 루프를 사용할 때 특히 까다로운 일을 발견했습니다. 최근에 제가 한 일은 여기에 있습니다 : https://github.com/fantix/gino/blob/master/gino /local.py – fantix

+0

아, https://www.python.org/dev/peps/pep-0550/을 기다려주세요! – fantix

0

저는 aiotask-context package으로 일하고 있습니다. 이는 작업간에 컨텍스트를 전달하는 매우 간단한 방법입니다 (await 또는 yield from이라고 함). 패키지를 사용하지 않으려 고해도 여전히 아이디어를 사용할 수 있습니다 :).

나는 ensure_future 호출을 위해 전파하는 방법도 연구 중이다.