[Stackless] monkeypatching

Richard Tew richard.m.tew at gmail.com
Sun Dec 1 04:05:26 CET 2013


Hi Lars,

stacklessio is internal ccp stuff.

main.py in stacklesslib is pretty much all you need to understand,
beyond calling patch_all().  It is a scheduler, and makes your Open
scheduler redundant.

I suggest you get the latest stacklessio from:

https://bitbucket.org/krisvale/stacklesslib

And then you check out test / teststdlibunittests.py, which is a short
example of monkey patching and running the stacklesslib scheduler.

Cheers,
Richard.

On 12/1/13, lars van Gemerden <lars at rational-it.com> wrote:
> sorry,
>
> patch_all seemed to simple, question was a bit rethoric ;-) tried it 2 mins
> after pressing send just in case and indeed no cigar.
>
> I am trying to get this demo running and all kinds of last minute #### is
> popping up.
>
> I tried reading the source but it doesn't click; i am not familiar with
> using sockets etc. at all.
>
> e.g.
>
> - do i need 'stacklessio'?
> - can i (essentially) just put a stackless.schedule() (or
> OpenTasklets.schedule() in the code below) in the serve_forever loop?
> - will this work at all with an adapted scheduler like this:
>
> class OpenTasklets(object):
>
>     _stop = False
>
>     @classmethod
>     def run(cls, maxcount = None):
>         cls.schedule_channel = stackless.channel()
>         cls.schedule_channel.preference = 1
>         counter = 0
>         OpenTasklets._stop = False
>         while stackless.getruncount() != 1:
>             stackless.run()
>             cls.reschedule(cls._stop or (maxcount and counter > maxcount))
>             counter += 1
>
>     @classmethod
>     def schedule(cls):
>         if cls.schedule_channel.receive():
>             raise TaskletExit
>
>     @classmethod
>     def reschedule(cls, stop = False):
>         while cls.schedule_channel.balance < 0:
>             cls.schedule_channel.send(stop)
>
> Any help is appreciated ..
>
> Lars
>
>
>
>
> On Sat, Nov 30, 2013 at 8:53 PM, Richard Tew
> <richard.m.tew at gmail.com>wrote:
>
>> Lars :-)
>>
>> Yes, there is no documentation for stacklesslib yet.  To use it, you
>> really need to be willing to read the source code.
>>
>> You should already know whether calling patch_all would be enough.  It
>> would have been something you could have tried immediately, rather
>> than asking the list and waiting.
>>
>> Cheers,
>> Richard.
>>
>> On 11/30/13, lars van Gemerden <lars at rational-it.com> wrote:
>> > Hi all,
>> >
>> > I though i could avoid it to run my demo but it seems i need to let the
>> > webserver (simple server?, single thread, 'bottle' micro framework)
>> > yield
>> > to the scheduler i am using. I have downloaded stacklesslib 1.0.3, but
>> > can't find any documentation to help with monkeypatching.
>> >
>> > - Do i just run patch_all at the start of the program?
>> >
>> > Any help is very welcome ..
>> >
>> > Cheers, Lars
>> >
>> > --
>> > ====================================
>> > Lars van Gemerden
>> > lars at rational-it.com
>> > +31 6 26 88 55 39
>> > ====================================
>> >
>>
>> _______________________________________________
>> Stackless mailing list
>> Stackless at stackless.com
>> http://www.stackless.com/mailman/listinfo/stackless
>>
>
>
>
> --
> ====================================
> Lars van Gemerden
> lars at rational-it.com
> +31 6 26 88 55 39
> ====================================
>



More information about the Stackless mailing list