[英]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.