[Twisted-Python] Swapping a set of deferreds to diskOrganization: One Piece
Vincent Bernat
bernat at luffy.cx
Fri Oct 19 01:14:55 EDT 2007
Hi !
I have a function which returns a deferred but will take many time to
really process an item. This function will be feed with a lot of
items. For example, the function could be called 1000 times per second
and will take 30 minutes to really process each item. However, I don't
know the delay. The function could also process the items in real time.
When the function takes 30 minutes to really process the item, the
reactor will keep a lot of deferreds and huge portions of
memory. Therefore, I would like to store myself those items (in a
database for example) and wait the function to be ready to process all
the items (because the function knows when it will be ready).
I could store the items directly in the database and asks the function
an unique deferred whose callback will be handled when the function is
ready to process my items. But since, the function could be a function
that process items in real time (and more faster than a database), I
would like to use this "fallback" method only if the reactor has already
a lot of deferred for this function. Ideally, in this case, current
deferred should be converted to database.
In short, I would like to be able to store/flush deferreds in database
when I have a lot of them and keep them in memory if I have only a few
of them.
For example, a naive implementation could be to implement subclass of
Deferred and each Deferred instance can store itself to disk if a lot of
instances of this subclass already exists. This is not exactly what I
want since I need a mechanism that will also flush all instances to disk
instead of keeping them in memory. So an instance should be able to
replace a lot of instances and recreate them when the function becomes
ready.
Does such a thing already exists? If it helps, I can guarantee that
function will process items in FIFO order.
Thanks.
--
I WILL NOT AIM FOR THE HEAD
I WILL NOT AIM FOR THE HEAD
I WILL NOT AIM FOR THE HEAD
-+- Bart Simpson on chalkboard in episode 8F13
More information about the Twisted-Python
mailing list