2017-08-09 121 views
1

我們有一個設置,在同一個服務器上運行相同Rails應用程序的兩個不同環境(例如stagingtraining)。我們正在實施一項依賴於delayed_job寶石的功能。在同一臺服務器上爲不同環境運行delayed_job

我們發現在兩種環境下都不可能運行delayed_job start,因爲第二個看到第一個實例並認爲它已在運行。但是,-i命令開關(staging\bin\delayed_job -i staging starttraining\bin\delayed_job -i training start)允許兩個實例共存;但它看起來像這個開關設計爲一個應用程序啓動多個工作人員(很像delayed_job -n 2 start),而不是多個應用程序。

我們並不清楚以這種方式啓動的守護進程是否會正確處理來自他們自己的應用程序的作業,或者是否需要進一步的配置來實現此目的。任何人都可以啓發我們嗎?

回答

1

./script/delayed_job --help輸出中可以看到一些有趣的選項。

  • --pid-DIR = DIR指定在其中存儲的進程ID的備用目錄。
  • --log-dir = DIR指定用於存儲delayed_job日誌的備用目錄。

這些都默認爲源目錄的子目錄,所以如果碰巧被用完了多個源目錄的,它應該工作的罰款。如果出於某種原因,您的版本不是這種情況,或者如果您是從相同的目錄運行,並且環境不同,那麼您應該相應地設置文件夾,以便每個文件夾至少擁有自己的PID文件夾。

  • -p - 前綴名字符串添加前綴到工作進程名稱

這不會改變pid文件名,只有你將與ps

+0

看謝謝,這很有幫助。我們從不同的源代碼庫運行,所以PID和日誌正常工作。在回答之前,我們發現'-i'選項確實可以爲進程名添加一個標識符。不過,'-p'可能更「正確」。 – Chowlett

+0

@Chowlett雖然'-i'似乎可以工作,但請記住它應該用於指定_numeric_標識符,並且它不能與'-n'結合使用來指定工作人員的數量。 另外,'-p'對於同一個目錄中的pid文件衝突沒有實際的幫助,它只是讓進程本身具有更有意義的名稱。 – Vince

相關問題