Thanks. FYI I am a ex CCPer. :)
On 1/2/14, Richard Tew <[email protected]> wrote: > Monkey-patching is simply replacing the low level operations (like the > socket module and the select.select function and the time.sleep > function and so forth). These normally block the whole thread (and > therefore scheduler) until the operation is complete. > > So you write some code to import these modules and replace attributes > and objects with one's that just block the calling tasklet. The > tasklet is either awakened by some non-blocking method or callback or > simply farming the work off to another thread transparently, when the > operation completes. > > Only you don't need to do this monkey patching yourself, because > Kristjan has released and updates the source code to a small library > that CCP uses in some projects - stacklesslib. > > You can find it on bitbucket: > > https://bitbucket.org/stackless-dev/stacklesslib > > Most third party code will just work if you do the monkeypatching > first, then import the django or whatever, and then just go about your > business. > > There are some cases where the code won't work, and you need to muck > around a little to get it to work. Graphical frameworks, perhaps like > tkinter, pyqt, pygame and so forth often have main loops. In those > cases they need to run a call to the stackless scheduler, or have the > scheduler do a secondary poll call of some sort, rather than running > the main loop. > > I'm sure someone has already covered how to get django running with > stackless somewhere. I think CCP did it at some point. > > There's also a wikipedia page on monkeypatching if you are not > familiar with the general concept: > > http://en.wikipedia.org/wiki/Monkey_patch > > Cheers, > Richard. > > On 1/3/14, Robert Babiak <[email protected]> wrote: >> Thanks Richard. >> >> but what do you mean by "monkeypatch it via stacklesslib" how/ where can >> i >> learn about MonkeyPatching? >> >> Then I would assume I would just run it as any other tasklet, which I >> would >> suspect would solve several problems i have with passing events, and SQL >> calls on the wrong thread. >> >> - Rob >> >> ---------- Forwarded message ---------- >> From: Richard Tew <[email protected]> >> To: The Stackless Python Mailing List <[email protected]> >> Cc: >> Date: Thu, 2 Jan 2014 11:58:39 +1300 >> Subject: Re: [Stackless] multiprocessing module and stackless threads >> If your web server uses non-blocking IO, then it shouldn't be >> necessary to have two schedulers. I imagine with Django, you would >> monkeypatch it via stacklesslib and it would then work in a >> stackless-compatible non-blocking fashion. >> >> Stackless supports per-thread schedulers, and explicitly supports >> interthread channel communication. There is no explicit Stackless >> support for multiprocessing. If it opaquely uses threads, then it >> works in the manner mentioning threads above. If interthread channel >> usage is not being used, then channels switch between tasklets on the >> same Python thread. >> >> Cheers, >> Richard. >> >> On 1/2/14, Robert Babiak <[email protected]> wrote: >>> I have a question. >>> >>> Is it possible to use the multi processing module and stackless >>> together? >>> >>> What i would like to do is have my application start a second process to >>> handle the web server side of things, and the main thread control the >>> main >>> display. >>> >>> Can the two communicate via channels, or is the separate process >> completely >>> independant? >>> >>> If I don't use the multiprocessing and just use the threading module to >>> make a dedicated web server thread. Would it be better to run two >> stackless >>> schedulers and have the one only run a single tasklet running the web >>> server request loop? >>> >>> FYI: I am using DJANGO for the web server support, and the main display >>> is >>> a Open GL display. The main interaction to the display will be by web >>> requests, but only some web calls will interact with the GL display. >>> >>> Suggestions and wisdom welcome. >>> >>> - robert >>> -- >>> Life: Bah, I will worry about it when it is over. >>> >> >> -- >> Life: Bah, I will worry about it when it is over. >> > > _______________________________________________ > Stackless mailing list > [email protected] > http://www.stackless.com/mailman/listinfo/stackless > -- Life: Bah, I will worry about it when it is over. _______________________________________________ Stackless mailing list [email protected] http://www.stackless.com/mailman/listinfo/stackless
