2015-02-06 4 views
7

웹 서버로 Puma를 사용하고 대기열 러너로 Sidekiq을 사용하고 있습니다.내 코드가 Sidekiq 서버 또는 Puma의 "내부"에서 실행되는지 여부를 어떻게 확인할 수 있습니까?

(데이터베이스 연결, Redis 연결, 기타 외부 서비스) 연결 풀에 대한 안전한 액세스를 관리하기 위해 ConnectionPool gem을 사용하고 있습니다.

이제 Sidekq 또는 Puma의 컨텍스트에서 실행 중인지 여부에 따라 다른 크기 (Sidekiq Threads 또는 Puma 스레드의 개수만큼 큽니다. 서로 다릅니다)

이니셜 라이저에서 실행 컨텍스트를 기반으로 연결 풀을 만드는 것이 얼마나 좋은지 가장 좋은 방법은 무엇입니까?

감사합니다.

답변

34

사이드 키 프로세스 내부에서 실행되지 않을 때 nil을 반환하는 Sidekiq.server?을 사용합니다.

+0

sidekiq enterprise를 제외하고. sidekiq 기업에서 이제 "상수"가 포함 된 문자열을 다시 얻습니다. 기업으로 업그레이드하기 전에는 그렇지 않았습니다. 트리니다 드에 일어 났 ... – user934801

+0

그것이 잘못되었으므로 문제를 열어야합니다. –

1

구체적인 사례 (puma/sidekiq)에 대해 알지 못하지만 일반적으로이 정보는 $PROGRAM_NAME 변수에서 찾을 수 있습니다. 또한 유사한 것은 $0__FILE__입니다.