簡體   English   中英

在Sidekiq計划后將數據保存到數據庫

[英]Saving data to database after Sidekiq's schedule

我可能對Sidekiq的概念有誤解 我的理解是,您可以創建一個后台作業,讓它等待x分鍾,然后再保存到數據庫中 我到目前為止是否正確(保存到數據庫)?

我已經得到了sidekiq 來展示我的工作,但是x分鍾后,我不知道發生了什么。

在Sidekiq之前 ,這是我在提交帖子后將其保存到數據庫的方式:

support_controller.rb:

def create
 @user = current_user
 @support = @user.supports.build(support_params)

 if @support.save
  flash[:success] = 'Yes'
 else
  flash[:alert] = 'No'
 end
 ...

private
 def support_params
  params.require(:support).permit(:foo)
 end
end

與Sidekiq: 這篇文章

使用Sidekiq的原因是我需要在x天后刪除帖子。

如果您使用Sidekiq的唯一原因是刪除x天后的帖子,即使不使用Sidekiq,也可以實現此目的:

  1. 存儲應該在數據庫中刪除帖子的時間。
  2. 創建一個刪除任務,刪除所有刪除日期已過期的帖子。
  3. 從Cron作業每隔x天/小時/分鍾運行一次此rake任務。

要在部署/紅寶石內部創建cron作業,可以像任何時候一樣使用gem。 因此,您的瑞克任務將類似於:

namespace :posts do
  desc 'Clean up posts'
  task clean: :environment do
    # with callbacks (method 1)
    Post.where('delete_at >= ?', DateTime.now).each do |post|
      post.destroy
    end

    # without callbacks (method 2)
    Post.delete_all('delete_at >= ?', DateTime.now)
  do
end

而不僅僅是在任何時候創建cron作業:

# just run the rake task every x days at x:xx
every 1.day, at: '1:00 am' do
    rake "posts:clean"
end 

暫無
暫無

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

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