in search of graceful co-routines

C

Chris Withers

Hi All,

I'm looking for a graceful pattern for the situation where I have a
provider of a sequence, the consumer of a sequence and code to moderate
the two, and where I'd like to consumer to be able to signal to the
provider that it hasn't succeeded in processing one element in the queue.

So, I'd want the controlling code to look a lot like:

for item in provider:
try:
consumer.handleItem(self)
except:
provider.failed(item)

Now, since the sequence is long, and comes from a file, I wanted the
provider to be an iterator, so it occurred to me I could try and use the
new 2-way generator communication to solve the "communicate back with
the provider", with something like:

for item in provider:
try:
consumer.handleItem(self)
except:
provider.send('fail')
else:
provider.send('succeed')

...but of course, this won't work, as 'send' causes the provider
iteration to continue and then returns a value itself. That feels weird
and wrong to me, but I guess my use case might not be what was intended
for the send method.

Anyway, I wonder how other people would write this?
(I'm particularly interested in a sane way to use the two way
communication that PEP 342 introduced)

cheers,

Chris
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top