새 행을 저장하면 2 개의 비동기 작업이 시작됩니다. 일부 공유 모델 코드를 통해 실행되는 백그라운드 작업 중 하나를 디버깅하려고합니다. 문제는 공유 코드를 디버깅하기 위해 로깅을 추가하면 갑자기 엉키고 다음과 같이 보입니다.
15:36:42 worker.1 | Running SQL "select count() .." (job #1)
15:36:42 worker.1 | Running SQL "select * .." (job #2)
15:36:42 worker.1 | Got to part 2 of the code (job #1)
15:36:42 worker.1 | Got to part 3 of the code (job #1)
15:36:42 worker.1 | Got to part 2 of the code (job #2)
15:36:42 worker.1 | Got to part 3 of the code (job #2)
15:36:42 worker.1 | Got to part 4 of the code (job #1)
15:36:42 worker.1 | Job failed (job #2)
15:36:42 worker.1 | Job complete (job #1)
"작업 # 2"레이블을 제외하고 실제로는 불가능합니다. 혼란을 설명하기 위해 방금 추가했습니다.
결과로 발생하지 않는 모든 로그 줄을 필터링하고 싶습니다. job #2
두 작업은 같은 것을 공유 process.pid
합니다. "분리 된 프로세스 여야합니까"?
작업 2를 분리하고 작업 1과 독립적으로 실행할 수 있습니까? (또는 디버그하려는 결과를 생성하는 작업을 생성하는 데 시스템에 필요한 입력을 제공 할 수도 있습니다.)
그렇지 않다면 레이블을 붙일 수 있습니다 async jobs
. 각 작업에 체인 초기에 초기화되고 체인 전체에 전달되는 고유 ID를 제공 할 수 있다면 해당 ID를 기반으로 로그를 grep 할 수 있습니다.
코드에 레이블을 지정하는 것은 실제로 가능성이 있어야하며 코드를 재구성하거나 리팩토링해야 할 수도 있습니다.
또 다른 옵션은 작업을 오프로드하는 작업자 풀을 갖는 것입니다.이 풀은 각 작업을 작업자에게 격리하지만 필요하지 않을 수 있으며 확실히 프로그램에 복잡성을 추가합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다