gpt4 book ai didi

Ruby:Resque 立即排队

转载 作者:可可西里 更新时间:2023-11-01 11:02:22 25 4
gpt4 key购买 nike

我有以下代码。它的工作是根据通过浏览器(使用 Sinatra)提供的数据发送电子邮件。它会在 20 秒后向给定的地址发送一封电子邮件。当我运行该程序时,它会立即发送电子邮件,而无需等待时间。谁能帮我解决这个问题。

require 'rubygems'
require 'sinatra'
require 'pony'
require 'resque'
require 'resque_scheduler'
require 'active_support/time'

Resque.redis = 'localhost:6379'
Resque::Scheduler.dynamic = true

def sendMail

Pony.mail({
:to => 'eldurotaduro@gmail.com',
:via => :smtp,
:via_options => {
:address => 'smtp.gmail.com',
:port => '587',
:enable_starttls_auto => true,
:user_name => 'EMAIL',
:password => 'PASSWD',
:authentication => :plain, # :plain, :login, :cram_md5, no auth by default
:domain => "localhost.localdomain" # the HELO domain provided by the client to the server
},
:body => 'roar'
})

end


class Roar
def self.queue; :app; end
end

class ChildJob

@message
@email

def setMess(mes)
@message = mes
end

def setMail(mail)
@email = mail
end


def self.queue; :app; sendMail; end

def self.perform
Pony.mail({
:to => 'eldurotaduro@gmail.com',
:via => :smtp,
:via_options => {
:address => 'smtp.gmail.com',
:port => '587',
:enable_starttls_auto => true,
:user_name => 'EMAILHERE@gmail.com',
:password => 'PASSWD',
:authentication => :plain, # :plain, :login, :cram_md5, no auth by default
:domain => "localhost.localdomain" # the HELO domain provided by the client to the server
},
:body => 'HAHAH'
})
end

end



get '/:email/:message/:time' do

email = params[:email]
message = params[:message]
time = params[:time]
time = time.to_i

Resque.enqueue_in(20.seconds, ChildJob)

end

最佳答案

self.queue 中保留 :app 符号,因为它设置了默认队列(参见 this StackOverflow answer )。将 sendMail 放入 self.perform 方法中,因为这是您希望在满足计划时完成的事情。例如

def self.queue
:app
end

def self.perform
sendMail
end

关于Ruby:Resque 立即排队,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15603409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com