높은 트위터 앱 사이트에서. 앱이 사용자 oauth 자격증 명을 통해 트윗을 보내는 곳입니다. 배경 작업자 (Resque, 지연된 작업 등)를 통해 백그라운드에서 트윗이 전송되어야합니까? 아니면 웹 프로세스가 처리해야합니까?짹짹이 백그라운드에서 수행되어야합니까?
0
A
답변
1
정말 사용 사례에 따라 다릅니다. 트위터 자체는 API에 AJAX 요청을 보냅니다. 인터페이스에서 의미가있는 경우 동일한 작업을 수행 할 수 있지만 웹 프로세스를 사용하고 있음을 의미합니다. 이것에 대한 이점 중 하나는 사용자에게 resopnse를 반환하기 전에 요청이 성공했는지 확인할 수 있다는 것입니다. 백그라운드에서 대기열에 넣고 실패하고 사용자에게 경고하고 싶은 경우 (예 : "실시간"아약스/소켓 기반 메시지 시스템 또는 다른 요청에 대한 플래시 알림)보다 훨씬 쉽습니다.
짹짹 (예 : 응용 프로그램이 더 큰 작업의 일부로 보내는 경우)을 표시 할 필요가 없다면 백그라운드에서 수행하는 것이 분명히 좋습니다.
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