2016-10-23 1 views

ответ

0

Для СУХИХ целей я двигаюсь некоторую логику в отдельный метод:

def fav_tweet(tweet) 
    puts tweet.text 
    rClient.fav tweet 
end 

Один из вариантов, чтобы сделать отдельный поток, а затем вызвать sleep там. Это не остановит выполнение в вашем основном потоке, поэтому ваш бот может продолжить мониторинг ввода.

Так я определю другой метод:

def in_delayed_thread(num_seconds) 
    Thread.new { sleep num_seconds; yield } 
end 

Затем измените существующий код следующим образом:

TweetDelayInSeconds = 30 # seems like this could be a constant 

if tweet.is_a?(Twitter::Tweet) 
    in_delayed_thread(TweetDelayInSeconds) { fav_tweet(tweet) } 
end 

Существует и другие подходы к планированию задачи. Но я думаю, что это, вероятно, ближе всего к «простому хаку», который вы просите. Например, вы можете запланировать одноразовую задачу с Bash - см. https://askubuntu.com/questions/339298/conveniently-schedule-a-command-to-run-later, но это, вероятно, будет включать в себя некоторые рефакторинги вашего кода, чтобы позволить быть вызванным таким образом.

+0

Отлично! Это супер полезно! **Благодаря!** – mcarvajal

Смежные вопросы