[Twisted-Python] feedback requested -- flow.py goes beta
Clark C. Evans
cce at clarkevans.com
Sat Apr 19 15:55:54 EDT 2003
When to use flow?
For simple processes which can be broken down into
a small set of chunks, then Deferred is the best way
to go. To make it worth while to use flow, you need
one of the following:
a) incremental results: for example, a big or slow
executing database query that needs to process
results as they become available.
b) merging or splitting: for example, having two
database queries running in parallel, the
results being merged together
c) complicated chunking: if your deferred chunks
start to get numerous or have non-trivial logic
in them, then flow would be useful.
d) intensive computations: if your process has
computations that need to be broken into
chunks, then flow may be better than deferreds.
I renamed flow.ThreadedIterator to flow.Threaded,
as it is now a wrapper (you don't inherit).
On Thu, Apr 17, 2003 at 04:09:57PM +0000, Clark C. Evans wrote:
| Abstract: >
| The flow module implements cooperative multi-tasking using
| iterators (easily created with generators) and Twisted's
| event reactor. The flow module also includes support for
| incrementally returning query results from Twisted's
| database connection pool. While this module does _not_
| require generators (a python v2.2 feature), applications
| of the module are best demonstrated with generators.
| Status: >
| The flow module (flow.py) is currently checked into CVS in
| the sandbox directory. It is unlikely that any large
| changes to the module will happen. The documentation
| is partial, but currently in development.
| General feedback from the Twisted Community is requested.
| Deployment: >
| If flow was accepted into twisted, I was thinking
| of spreading its functionality over several files.
| 1. Adding a base implementation module, twisted.python.flow,
| which only depends upon other items in twisted.python
| 2. Adding a (fairly small) Flow class to
| twisted.internet.defer which takes the base
| implementation and uses the reactor and inherits
| from Deferrred.
| 3. Adding a ThreadedIterator class to twisted.internet.threads
| which depends upon twisted.internet.reactor and
| 4. Adding a (fairly small) QueryIterator class to
| twisted.enterprise.adbapi which depends primarly
| on ThreadedIterator, but provides for query
| functionality from a ConnectionPool
| Twisted-Python mailing list
| Twisted-Python at twistedmatrix.com
More information about the Twisted-Python