簡體   English   中英

如何在生產環境中自動啟動Rails Background Worker

[英]How do I start my Rails Background Worker automatically in Production Environment

我發現我是在Develoment Environment上手動啟動后台工作人員的。

如果我的后台工作者沒有運行,我的付款/交易將不會成功。

我做了什么

我創建了一個Procfile,並在其中包含以下內容:

ApplicationName /程序文件

worker: bundle exec rake jobs:work 

如果部署我的應用程序,這是否真的可以解決我的問題? 如果沒有, 我該如何在生產中啟動后台工作者?

更新資料

我被要求從發布的答案中訂購,Procfile僅適用於Heroku 請注意, 我喜歡部署到DigitalOcean 我正在為我的Background Worker使用Delayed_Job,在它的文檔中,它聲明我們可以在生產中使用以下代碼,將其與"daemons" gem捆綁在一起。

RAILS_ENV=production script/delayed_job start
RAILS_ENV=production script/delayed_job stop

無論如何,我可以通過初始化它來自動化它,例如env。 拿起代碼執行?

Procfile僅適用於heroku。 因此,如果您要部署到Heroku,請跳過我的其余回答。

如何執行取決於您所部署的系統。 大多數使用systemd的現代linux系統(即Ubuntu)。 因此,您很可能需要創建啟動腳本並將其放入/lib/systemd/system/__your_service__.service

舉個例子

[Unit]
Description=__Your worker_name__

[Service]
Type=forking
User=__your_user__
WorkingDirectory=__your_working_dir__
Environment=RAILS_ENV=production
PIDFile=__your_working_dir__/tmp/pids/__your_service__.pid
ExecStart=absolute_path_to_bundle exec rake jobs:work 

[Install]
WantedBy=multi-user.target

然后鍵入,你就很好了:)

sudo systemctl enable __your_service__ && sudo systemctl start __your_service__

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM