如何使用 Rails 让我的 Twitter Bot 保持清醒?
Posted
技术标签:
【中文标题】如何使用 Rails 让我的 Twitter Bot 保持清醒?【英文标题】:How can I keep my Twitter Bot awake with Rails? 【发布时间】:2020-04-16 09:19:49 【问题描述】:我的主要目的是创建一个 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
【问题讨论】:
【参考方案1】:我认为您可以使用#clockwork_gem
您需要执行以下操作:
首先安装发条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
像这样使用
worker: bundle exec clockwork lib/clock.rb
每次 Heroku push/web 服务器重启后都会启动服务器。
或者您可以像这样使用计算机上的控制台运行,但在这种情况下,您需要在每次重新启动 Web 服务器后运行
heroku run bundle exec clockwork lib/clock.rb
然后从 Heroku 打开控制台并输入
bundle exec clockwork lib/clock.rb
希望这会有所帮助:)
【讨论】:
非常感谢您的努力。您的解决方案正是我所需要的:) 在解决方案之前我不得不这样做。我的意思是我为 heroku 找到了一个附加组件,它被称为“Heroku Scheduler”。这与您的解决方案基本相同。谢谢!以上是关于如何使用 Rails 让我的 Twitter Bot 保持清醒?的主要内容,如果未能解决你的问题,请参考以下文章
如何让我的 Rails 应用程序使用我的 postgresql 数据库?
如何让我的 Twitter 提要与博客集成(带有单独的评论线程)?
如何让我的 Twitter Bootstrap 按钮右对齐?
如何让我的 Rails 5 日志向我显示与 Rails 4 一样的每个操作的详细信息?