[Twisted-Python] Re: hacking on flow

Philippe Lafoucrière lafou at wanadoo.fr
Thu Apr 10 05:51:28 EDT 2003


Clark, this is just an alogithme I was thinking of, before I found flow.py

I had to manage different flows in one application.

DS1 ----> BLOC1 ---+
                   |
DS2 ----> BLOC2 ---+---- BLOC3 -----> DS3

is an exemple of what it could be. Every thing is a bloc. DSx are 
datasources (there are also blocs). BLOCx are some treatment bloc that 
operate with their inputs, and provide the result on their outputs.

this is the algorithm comming with :

all bloc are "inactive"
for bloc in blocs:
    if len(bloc.inputs) is 0:
        bloc is "active" # it should be a datasource/producer


gotData(bloc, lines) :
    for line in lines:
        fill in connected blocs's inputs with outputs
        connected blocs are active
        while connected blocs's inputs are set:
            wait # I know, this sucks
    bloc is inactive

while there are still active blocs  
    for bloc in blocs
        if all inputs are available (!= None)
            bloc.proceed().addCallback(gotData)
        

# Fin algo #################################

This doesn't work because we wait for blocs to finish their jobs, and never 
come back to main loop...

This means also that I have to define a mapping between inputs / outputs of 
blocs. I can't see such thing in flow.py, that's maybe why I don't 
understand it well.

I wish I was clear enough :p





More information about the Twisted-Python mailing list