Slide 19
Slide 19 text
Delayed Signals
• Typical Django signals sent to a queue
# in models.py
post_save.connect(delayed.post_save_sender,
sender=Post, weak=False)
# elsewhere
def check_spam(sender, data, created, **kwargs):
post = Post.objects.get(pk=data['id'])
if slow_api.check_spam(post):
post.update(spam=True)
delayed.post_save_receivers['spam'].connect(check_spam,
sender=Post)
# usage
post = Post.objects.create(message="v1agr4!")
Not really for ‘scale’, more dev ease of use.
We don’t serialize the object (hence the query).
Not open sourced currently, easy to recreate.
Questionable use ... it’s pretty easy to just task.delay() inside a normal post_save handler.