I too fell down the asynchronous rabbit hole where, along the way, I
discovered coroutines. Although somewhat archaic, they have been around a
long time and seem to me considerably easier to read and debug. If you are
interested in exploring a somewhat different approach you are more than
welcome to check out the Python library I wrote to learn about them. The
code is still very beta but hopefully easy to use.

http://rootfoo.org/blackmamba

--meta

On Wed, Oct 5, 2011 at 6:42 PM, Isaac Dawson <[email protected]> wrote:

> I find Twisted python (http://www.twistedmatrix.com) very easy to debug
> once you understand how Deferred work. Especially if you're using their unit
> test framework Trial. I will definitely agree you that you end up spending a
> lot of time porting non-async code into your async stuff, to the point where
> you become kind of obsessed with it. With twisted you're feeder Queue
> example is as simple as deferToThread() and then praying you don't have any
> locking problems :D.
>
> On Thu, Oct 6, 2011 at 1:38 AM, Dave Aitel <[email protected]> wrote:
>
>>  So while I'm in the process of running a large asynchronous event-driven
>> product in a VM in another window, it's a good time to read all sorts of
>> things about asynchronous programming.
>>
>> Frankly, I'm not a huge fan of it, but Chris is, and he's a better
>> programmer than me, so we'll leave it at that. Largely, I think people are
>> fans of Async because most languages and kernels are terrible at threads.
>> Python, for example, does not have threads. "No worky worky", as we say
>> around here.
>>
>> The downside of async is that it is basically impossible to debug, and you
>> need a programmer as good as Chris to even begin to use it well. Likewise,
>> the locking/blocking problems don't go away, they just get mapped into a
>> more inscrutable form.
>>
>> So for systems that have working threads, you use them for anything
>> IO-heavy (aka, web servers/crawlers/other useful hacking tools). But since
>> almost no system HAS working, scalable, threads, people get excited about
>> async.  And then you spend your whole life saying "Hey, this thing I do
>> sometimes has to do a lot of work on the CPU, so let's put it in another
>> thread please". Or "Hey, this whole giant DB library we have to use isn't
>> built from the ground up to use Async, so we need it to be in its own thread
>> and manage a feeder Queue to it".
>>
>> And then eventually you're like "Why on earth am I spending so much time
>> worrying about how efficient an algorithm that runs on one machine is?" and
>> you go off and build something that scales horizontally onto multiple
>> machines. (Where "multiple" is > 100).
>>
>> But in the meantime you have things like asyncore and Node.js and stuff. I
>> can't do them justice, but these posts below are the funniest thing you'll
>> read since Steve Yegge <http://steve-yegge.blogspot.com/>.
>>
>> http://teddziuba.com/2011/10/node-js-is-cancer.html
>> http://teddziuba.com/2011/10/straight-talk-on-event-loops.html
>> http://www.unlimitednovelty.com/2011/10/nodejs-has-jumped-shark.html
>>
>> -dave
>>
>> --
>> INFILTRATE 2012 January 12th-13th in Miami - the world's best offensive 
>> information security conference.www.infiltratecon.com
>>
>>
>> _______________________________________________
>> Dailydave mailing list
>> [email protected]
>> https://lists.immunityinc.com/mailman/listinfo/dailydave
>>
>>
>
> _______________________________________________
> Dailydave mailing list
> [email protected]
> https://lists.immunityinc.com/mailman/listinfo/dailydave
>
>
_______________________________________________
Dailydave mailing list
[email protected]
https://lists.immunityinc.com/mailman/listinfo/dailydave

Reply via email to