我的主要目的是创建一个Twitter机器人。基本上,这将从某些帐户转发推文。除了使机器人保持清醒状态之外,其他所有东西都可以正常工作。为了使机器人保持清醒状态,我需要将笔记本电脑和控制台保持打开状态。如何部署可以为我完成此任务的应用程序?我想让服务器为所有这些工作。我尝试使用Heroku,但由于预期原因导致请求超时,因此应保持超时以保持我的方法继续运行。
预先感谢...
我的方法:
def self.start_bot
@client = Twitter::REST::Client.new do |config|
config.consumer_key = ENV["CONSUMER_KEY"]
config.consumer_secret = ENV["CONSUMER_SECRET_KEY"]
config.access_token = ENV["ACCESS_TOKEN"]
config.access_token_secret = ENV["ACCESS_SECRET_TOKEN"]
end
while true do
begin
@client.search("from:ExampleAccount1 OR from:ExampleAccount1 OR from:ExampleAccount1
min_faves:250 -rt", result_type: "recent").take(5).collect do |tweet|
begin
@client.fav(tweet)
@client.retweet(tweet)
sleep(2)
rescue
puts "Already retweeted."
sleep(3)
end
end
puts "one round completed."
sleep(120)
rescue
puts "Something Happened"
sleep(240)
end
end
end
答案 0 :(得分:1)
我认为您可以使用#clockwork_gem
您需要执行以下操作:
在您的lib文件夹中创建一个lib / clock.rb
### Example :-
require 'clockwork'
require './config/boot'
require './config/environment'
module Clockwork
handler do |job|
puts "Running #{job}"
end
every(1.day, 'Creating Cycle', :at => '12:00') {YourClass_name.start_bot}
end
创建一个procfile
对于您的Procfile
,像这样使用
worker: bundle exec clockwork lib/clock.rb
每次Heroku推送/ Web服务器重新启动后,它将启动服务器。
或者您可以像这样从计算机使用控制台运行,但是在这种情况下,您需要在网络服务器重启后每次运行
heroku run bundle exec clockwork lib/clock.rb
并从Heroku打开控制台并输入
bundle exec clockwork lib/clock.rb
希望这会有所帮助:)