Skip to content

gdoermann/twango

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

twango = Django ORM + Twisted - Blocking

This is a library that contains a custom queryset and a custom manager that adds introspection to use the twisted database api instead of django. It returns deferred instead of just hitting the database.

To install:

  1. Run python setup.py
  2. Import and set the manager as the manager for any model

This will keep the orm from blocking when using the django orm!

Important

Does not make job in asynchronous way, but goes into threads and do not perform blocking main reactor.

Example Updated:

Returns defered. Does any methods call except "all", eg: Book.twisted.all()

d = Book.twisted.count()
d.addCallback(do_something)

Aslo "success_callback" and "error_callback" can be passed

d = Book.twisted.count(success_callback=do_something)
d.addCallback(do_something2)

Calling "all" method similarly, returns defered but does not accept any arguments

d = Book.twisted.all()
d.addCallback(do_something)

Example:

You can create models that are separate to be used in twisted processes:

from myapp import Book
from twango.manager import TwistedManager
from django.db.models.manager import Manager

class TwistedBook(Book):
    objects = Manager()
    twisted = TwistedManager()

    class Meta:
        app_label = 'myapp'
        proxy = True

Then you can use the twisted manager like you would with the regular manager... just with callbacks!

def count_me(count):
    print "Count: %s" % count

def all(queryset):
    print 'All: %s' % queryset

def none(queryset):
    print 'None: %s' % queryset

def callback(*args, **kwargs):
    Book.twisted.count(success_callback=count_me)
    Book.twisted.all(success_callback=all)
    Book.twisted.none(success_callback=none)

d = Deferred()
d.addCallback(callback)
d.callback(None)

reactor.run()

About

twango = Django ORM + Twisted - Blocking

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages