This is my scheduler.rb in my initializer file
unless defined?(Rails::Console) || File.split($0).last == 'rake'
s = Rufus::Scheduler.singleton
s.every '1m', :tag => 'main_process' do
Rails.logger.info "hello, it's #{Time.now}"
Rails.logger.flush
Bid.all.each do |bid|
id = bid.event_id
puts "*" * 50
puts bid.id
puts bid.event_id
puts "*" * 50
# @price = BuyNowBid.find_by(bid_id: params[:bid_id])
@events = Unirest.get("https://api.seatgeek.com/2/events/#{id}?&client_id=NjQwNTEzMXwxNDgxNDkxODI1").body
if @events["stats"]
@low = @events["stats"]["lowest_price"] || 0
@avg = @events["stats"]["average_price"] || 0
BuyNowBid.create(bid_id: bid.id, lowest_price: @low , average_price: @avg)
if @low <= bid.bid
send_message("+13125501444", "Lowest price matched! Buy your ticket now!")
bid.bid = 0
bid.save
end
else
puts 'problem with @events?'
p @events
end
end
end
finjoyau rufus comment garder un emploi en cours d'exécution tout en arrêtant l'autre
def send_message (phone_number, alert_message) account_sid = "" auth_token = ""
@client = Twilio::REST::Client.new account_sid, auth_token
@twilio_number = ""
message = @client.messages.create(
:from => @twilio_number,
:to => phone_number,
:body => alert_message
)
puts message.to
end
donc je Je cours un travail pour tirer le prix le plus bas chaque minute d'une API et quand le prix le plus bas correspond à une offre, ils reçoivent une notification de texte, qui fonctionne bien, le problème que je suis est que je veux que le travail continue minute je tire les lowes t prix de l'API, mais je ne veux pas que l'utilisateur continue d'obtenir la même notification de texte chaque minute.
À l'heure actuelle, je l'ai pour que cela ne se produise pas, mais après une enchère est en grande partie supprimé de la base de données. Donc, je demande comment puis-je continuer à gratter l'API chaque minute pour la correspondance d'enchère la plus basse, mais n'envoyer qu'un seul texte à l'utilisateur lui notifiant la correspondance et ne pas avoir à supprimer cette enchère de la base de données.
Très floue, le titre de votre question est d'ordre technique, alors que le contenu de votre question (le bas, le grand, le paragraphe) semble être de niveau supérieur. J'ai l'impression que vous pouvez conserver un index en mémoire en mappant les utilisateurs à leur dernière notification reçue et la vérifier à chaque fois pour déterminer si la nouvelle notification vaut la peine d'être envoyée. – jmettraux