<div dir="ltr"><div>I was waiting for someone to reply before contacting you off-list.  Have you found a reasonable solution?</div><div><br></div><div>I have something that probably does some of what you want.  I've used it as a platform for some academic-y cluster computing stuff over the past two years.</div>
<div><br></div><div>Unfortunately, calling it a prototype is a bit of a stretch, and in the short term you're better off rolling your own.  However, if there's nothing on CPAN that does what you want, I'll start cleaning up my code and think about deploying at some point in the future.<br>
</div><div><br></div><div><div>There's an early description of the system's ancestor here: <a href="http://nfulton.org/presentations/undergrad/genome10.pdf" target="_blank">http://nfulton.org/presentations/undergrad/genome10.pdf</a></div>
<div>Everything's been rewritten a few times, but that gives you a sense for the interface.</div></div><div><br></div><div>The regulator is fairly sophisticated, and the pipeline implementation lets you do all sorts of useful stuff (cyclic dependencies, eager vs lazy scheduling, introspection and modification of the pipeline by jobs, conditional dependencies, etc.)</div>
<div><br></div><div>There's also a reporting mechanism.  I've used it to play around with stuff like caching, memoization for distributed dynamic programming , and preemptive resource allocation, so it's pretty robust.</div>
<div><br></div><div>I had distributed computing in mind, but backends are decoupled and I could create a backend using processes instead of a cluster.  The whole point is to provide an easy way to build custom concurrency models.</div>
<div><br></div><div>Anyways.  Like I said, I probably won't be able to clean it up in time to give you something useful, and you're better off spending your time on the task at hand.  But if there's no useful tool out there for implementing/using concurrency frameworks, I'll clean it up and deploy.</div>
<div><br></div><div style>Cheers,</div><div style>Nathan Fulton</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Jan 30, 2013 at 2:59 PM, Doug Bell <span dir="ltr"><<a href="mailto:madcityzen@gmail.com" target="_blank">madcityzen@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I've got a number of processes being coordinated by a message queue.<br>
Each job consists of a number of steps, and each process handles one<br>
specific step for each job, like an assembly line. Each process keeps<br>
data about the current job run and puts it on a queue so that the next<br>
process knows what it has to do.<br>
<br>
I have an idea to build a framework around this so that I can add<br>
in-depth reporting and more flexibility, but it seems there are<br>
already frameworks in other languages that do exactly this (a<br>
co-worker pointed me to Spring's Integration Framework in Java).<br>
<br>
This is not a way to get parallelization, but it is a way to manage<br>
parallelization or delayed jobs (if a job has to wait for human input,<br>
for example) and provide reporting and monitoring on all the currently<br>
running jobs.<br>
<br>
Is there anything existing on CPAN to do this?<br>
<span class="HOEnZb"><font color="#888888"><br>
Doug Bell<br>
<a href="mailto:madcityzen@gmail.com">madcityzen@gmail.com</a><br>
_______________________________________________<br>
Chicago-talk mailing list<br>
<a href="mailto:Chicago-talk@pm.org">Chicago-talk@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/chicago-talk" target="_blank">http://mail.pm.org/mailman/listinfo/chicago-talk</a><br>
</font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br><div><div>Nathan Fulton</div></div><div><a href="http://nfulton.org" target="_blank">http://nfulton.org</a></div><div>CS Service Fellow</div><div>
Debate Team</div>
</div>