2015-02-06 21 views
7

Sto usando Puma come server Web e Sidekiq come mio gestore di code.Come posso rilevare se il mio codice è in esecuzione "all'interno" del server Sidekiq o di Puma?

Per più cose (connessioni Database, connessioni Redis, altri servizi esterni) Sto usando il gemello ConnectionPool per gestire l'accesso sicuro alle connessioni.

Ora, a seconda se sono in esecuzione nel contesto di Sidekiq o di Puma, ho bisogno di quei pool di dimensioni diverse (grandi quanto il numero di thread Sidekiq o Puma rispettivamente e sono diversi)

Qual è il modo migliore per sapere, nei propri inizializzatori, quanto è grande per rendere i pool di connessioni basati sul contesto di esecuzione?

Grazie!

risposta

34

Si utilizza Sidekiq.server? che restituisce nil quando non è in esecuzione all'interno del processo Sidekiq stesso.

+0

Fatta eccezione per sidekiq enterprise. Sull'azienda sidekiq ora ottengo una stringa che contiene "costante". Quale non era il caso prima dell'aggiornamento all'impresa. Happened on trinidad ... – user934801

+0

È necessario aprire un problema perché non è corretto. –

1

Non so sul caso specifico (puma/sidekiq), ma in generale è possibile trovare queste informazioni nella variabile $PROGRAM_NAME. Anche simili sono $0 e __FILE__.