Skip to content

Instantly share code, notes, and snippets.

@catsby
Forked from bryanhelmig/py.py
Created May 15, 2012 19:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save catsby/2704393 to your computer and use it in GitHub Desktop.
Save catsby/2704393 to your computer and use it in GitHub Desktop.
queue examples
# bad way
def new_message(request):
user = get_user_or_404(request)
message = request.POST.get('message', None)
if not message:
raise Http404
user.save_new_message(message)
for friend in user.friends.all():
friend.send_email(message)
return redirect(reverse('dashboard'))
# good way
@task
def alert_friends(user_id, message):
user = User.objects.get(id=user_id)
for friend in user.friends.all():
friend.send_email(message)
def new_message(request):
user = get_user_or_404(request)
message = request.POST.get('message', None)
if not message:
raise Http404
user.save_new_message(message)
alert_friends.delay(user.id, message)
return redirect(reverse('dashboard'))
# bad way
class MessageController < ActionController::Base
def index
render(file: 'public/404.html', status: 404) unless params[:message]
# using devise or similar
current_user.save_new_message(params[:message])
current_user.friends.each { |friend| friend.send_email(params[:message]) }
redirect_to dashboard_url
end
end
# good way
class MessageSend
def self.perform(user_id, message)
user = User.find(user_id)
user.friends.each { |friend| friend.send_email(message) }
end
end
class MessageController < ActionController::Base
def index
render(file: 'public/404.html', status: 404) unless params[:message]
# using devise or similar
current_user.save_new_message(params[:message])
Resque.enqueue(MessageSend, current_user.id, params[:message])
redirect_to dashboard_url
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment