Должны ли твиты быть сделаны в фоновом режиме? - PullRequest
0 голосов
/ 06 октября 2011

На высоком сайте приложений Twitter. Где приложение отправляет твиты через учетные данные пользователя oauth. Должны ли твиты отправляться в фоновом режиме, через фонового работника (Resque, Delayed Job и т. Д.)? Или веб-процесс должен это обрабатывать?

1 Ответ

1 голос
/ 07 октября 2011

Это действительно зависит от вашего варианта использования.Сам Twitter, я думаю, отправляет запрос AJAX в API.Вы можете сделать то же самое, если это имеет смысл в вашем интерфейсе, но это означает, что вы используете веб-процесс для этого.Одним из преимуществ этого является то, что вы можете убедиться, что запрос был успешным, прежде чем возвращать resopnse пользователю.Это гораздо проще, чем сценарий, когда вы помещаете в очередь что-либо в фоновом режиме, происходит сбой, и вы хотите предупредить пользователя (например, с помощью системы сообщений в режиме реального времени на основе ajax / socket или мгновенного уведомления о другом запросе).

Если вы не беспокоитесь о том, чтобы показывать твиты (например, ваше приложение отправляется как часть более крупного действия), тогда выполнение этого в фоновом режиме, безусловно, является подходящим способом.

Resqueэто здорово, а задания действительно легкие, поэтому вы можете быстро интегрировать их, чтобы обрабатывать их в фоновом режиме довольно быстро.

# app/jobs/send_tweet.rb
class SendTweet
  @queue = :tweets

  def self.perform(user_id, content)
    user = User.find(user_id)
    # send Tweet
  end
end

# app/controllers/tweet_controller.rb
def create
  # assuming some things here, like validation and a `current_user` method
  Resque.enqueue(SendTweet, current_user.id, params[:tweet][:message])
  redirect_to :index
end
...