我是Rails開發新手,我有一個問題。有以下代碼:在另一個線程執行任務
def create
@order = current_user.orders.create!(order_params)
OrderMailer.send_order_info(@order).deliver
end
此代碼創建一個新訂單,呈現json結果併發送有關它的電子郵件。郵件發送需要一些時間,我想我應該在另一個線程或類似的東西上做。請給我建議,我該如何做到這一點。謝謝!
我是Rails開發新手,我有一個問題。有以下代碼:在另一個線程執行任務
def create
@order = current_user.orders.create!(order_params)
OrderMailer.send_order_info(@order).deliver
end
此代碼創建一個新訂單,呈現json結果併發送有關它的電子郵件。郵件發送需要一些時間,我想我應該在另一個線程或類似的東西上做。請給我建議,我該如何做到這一點。謝謝!
您應該使用延遲電子郵件發送。你可以用Sidekiq,Delayed Job或Resque來做。
您還可以使用這些寶石推遲任何其他工作。
你應該看看文檔,看看哪一個最適合你的使用。
我個人使用Sidekiq,但如果您只想將它用於郵件程序,最容易安裝Delayed Job。
我們用菌種此:它更名爲 「Spawnling」 現在
https://github.com/tra/spawnling
非常容易使用:(控制器)
@user = User.create(params[:user])
spawn do
@user.do_some_slow_background_stuff
end
,或者,如果你想監視後臺進程是否已完成(@spawn_id是pid)
@user = User.create(params[:user])
spawner = spawn do
@user.do_some_slow_background_stuff
end
@spawn_id = spawner.handle
Yo你可以使用[sidekiq](https://github.com/mperham/sidekiq),[delayed_job](https://github.com/collectiveidea/delayed_job),[resque](https://github.com/resque/resque)或類似的東西。 –