send_async_fax
이라는 셀러리 작업이 있고 send_notifications
이라는 셀러리 작업이 있습니다. send_async_fax
을 직접 호출 할 수 있습니다. 그러나 send_notifications
으로 전화하면 send_async_fax
도 호출됩니다.다른 셀러리 작업에서 셀러리 작업 호출
send_async_fax
은 많은 인수 중 하나가 file
개체 목록입니다. send_async_fax
에 직접 전화하면 모든 것이 계획대로 진행됩니다. 그러나 간접적으로 호출 할 때 send_notifications
을 통해 유효한 열린 파일 목록이 초기화되지 않은 파일 목록으로 저하됩니다.
실례로 send_notifications
은 send_async_fax.delay
이 호출되었을 때 팩스를 보내기위한 별도의 비동기 작업을 생성한다는 것이 었습니다 (당연히 말이죠). 그러나 이렇게하면 파일 참조가 엉망이되거나 send_async_fax
이 실제로 작동하기 전에 send_notifications
이 파일을 닫고있는 것으로 의심됩니다.
delay
기능을 사용하지 않고
send_notifications
에
send_async_fax
호출 노력이 직감을 테스트하는 ((send_async_fax.delay 대신으로), 즉 send_async_fax (* * 인수를 인수)). 그것은 아무것도 바뀌지 않았습니다. 그런 다음
send_async_fax
의 장식자인
task
을 주석 처리하여 정규 기능으로 만들었습니다. 이 경우 모든 것이 예상대로 작동합니다.
이 작업을 수행하려면 명백한 해결책은 동기식 버전의 팩스 기능을 만들어서 비동기 버전 대신 셀러리 작업에서 호출 할 때 사용하는 것입니다. 그러나 나는 이것보다 더 우아한 해결책이 있기를 바라고 있습니다. 당신의 도움을 주셔서 감사합니다.
- 셀러리 == 3.0.19
- 장고 - 셀러리 == 3.0.17