2015-02-06 9 views
7

Używam Puma jako serwera WWW, a Sidekiq jako mój biegacz w kolejce.Jak wykryć, czy mój kod działa "na" serwerze Sidekiq lub Puma?

Dla wielu rzeczy (połączenia z bazą danych, połączenia Redis, inne usługi zewnętrzne) Używam gem ConnectionPool do zarządzania bezpiecznym dostępem do połączeń.

Teraz, w zależności od tego, czy używam kontekstu Sidekiq, czy Puma, potrzebuję, aby te pule miały różne rozmiary (tak duże, jak liczba wątków Sidekiq lub Puma odpowiednio, i są różne)

Jaki jest najlepszy sposób poznania, w swoich inicjalizatorach, jak duże są pule połączeń na podstawie kontekstu wykonania?

Dzięki!

Odpowiedz

34

Używasz Sidekiq.server?, która zwraca nil, gdy nie działa w samym procesie Sidekiq.

+0

Z wyjątkiem firmy sidekiq. W firmie sidekiq dostaję teraz ciąg znaków, który zawiera "stały". Tak nie było przed aktualizacją do przedsiębiorstwa. Stało się na Trynidadzie ... – user934801

+0

Powinieneś otworzyć problem, ponieważ jest to niepoprawne. –

1

Nie wiem na temat konkretnego przypadku (puma/sidekiq), ale generalnie można znaleźć te informacje w zmiennej $PROGRAM_NAME. Również podobne są $0 i __FILE__.