[00:13] *** vmlemon_ has joined #kamaelia
[07:07] *** bcarlyon|laptop has joined #kamaelia
[08:13] *** Uraeus has joined #kamaelia
[09:16] *** vmlemon_ has joined #kamaelia
[09:31] *** vmlemon_ has joined #kamaelia
[09:33] < vmlemon_> Hi
[09:33] < vmlemon_> kamlogbot: dance
[09:33] Reply: does the macarena
[09:51] *** Uraeus has joined #kamaelia
[09:55] *** Davbo has joined #kamaelia
[10:11] *** vmlemon__ has joined #kamaelia
[10:22] < Davbo> afternoon all
[10:24] < vmlemon__> Hi Davbo
[10:24] *** vmlemon__ is now known as vmlemon_
[10:32] *** vmlemon_ has joined #kamaelia
[11:21] *** Chong- has joined #kamaelia
[11:52] *** Davbo is lost in WSGI Code
[11:52] < Davbo> j_baker: can you just show me how to run an example app please :-)
[12:04] *** orphans has joined #kamaelia
[12:55] *** Davbo has joined #kamaelia
[13:48] *** Davbo has joined #kamaelia
[13:49] < j_baker> Davbo, I'm writing up a post to help clarify the WSGI code some for you.
[13:50] < j_baker> Which part are you getting lost at?
[13:51] < Davbo> Just got back in, give me a second j_baker :)
[13:52] < Davbo> Shouldn't your example wsgi app's have mains btw? So you could easily run them?
[13:52] < Davbo> or, how do I run them :)
[13:53] < j_baker> Well, first of all, are you running Kamaelia WebServe or are you using a web server like in the example?
[13:54] < j_baker> To answer your question, a WSGI "application" is really just a function, albeit one that is expected to perform certain ways.
[13:55] < Davbo> I thought so
[13:55] < Davbo> I'd expect your examples to have mains which run the Kamaelia WebServe and the app within that though
[13:57] < j_baker> Kamaelia WebServe isn't really anything more than a version of those examples that does more fancy stuff. :)
[13:57] < j_baker> The real meat of the WSGI code is in the WSGI Factories and the WSGI Handler.
[13:58] < Davbo> I've been looking at Handler this morning
[13:58] < j_baker> Yeah, that does the actual grunt work of running the WSGI application
[13:59] < j_baker> SimpleWSGIFactory and WSGIFactory do the part of figuring out which WSGI application to run.
[14:00] < j_baker> (admittedly, WSGIFactory is somewhat uglier than SimpleWSGIFactory partly because of some optimizations that I've made)
[14:00] < Davbo> I mean, it would help if I were familiar with the standards of WSGI (it would help *alot*) so I really just want to get one of your apps running as that's makes up a lot of testing I can do
[14:00] < j_baker> Ok, I'll post that to the board.
[14:01] < j_baker> I just now realized that I didn't actually give you a sample application to run with PasteApp either.
[14:02] < Davbo> Yeah, PasteApp is an interpreter for those PythonPaste app's?
[14:02] < Davbo> is what I gathered from it anyway
[14:02] < j_baker> No, Paste Deploy is a WSGI App that serves to find other WSGI Apps
[14:03] < j_baker> A lot of people use it because it has more advanced URL routing stuff than most WSGI servers.
[14:03] < Davbo> ah i see
[14:03] < j_baker> Actually, I'll tell you what will be the easiest way to get started: move on to Kamaelia WebServer first.
[14:04] < j_baker> I can walk you through getting that set up if you want.
[14:04] < Davbo> Alright, 1 moment
[14:06] < Davbo> Sorry, was sorting some stuff.
[14:07] < j_baker> np
[14:07] < j_baker> First of all, you'll want to go to private_JMB_Wsgi/Apps/Kamaelia-WebServe
[14:08] < Davbo> done
[14:09] < j_baker> Ok, what you'll do next is type ./make-unix.sh That will give you lots of text. :)
[14:09] < j_baker> This will create an executable in dist called kwserve, so all you have to do to run it is type dist/kwserve
[14:10] < j_baker> Then, if you haven't run it before, it should ask if you want to install it.
[14:10] < j_baker> All you have to do is hit y and if all goes as planned, it should run.
[14:11] < j_baker> (FYI, it will put some files in your home directory)
[14:11] < Davbo> alright, running
[14:11] < j_baker> Did it give you "serving on port 8080"?
[14:11] < Davbo> yeah
[14:12] < j_baker> Ok, now try going to http://127.0.0.1:8080/simple
[14:12] < Davbo> Hello from the write callable!
[14:13] < j_baker> And I'm assuming there's a lot of other output as well?
[14:13] *** vmlemon_ has joined #kamaelia
[14:13] < Davbo> Yeah
[14:13] < j_baker> FYI, the other output is the contents of the WSGI environment dictionary.
[14:13] < j_baker> (which I don't expect to make much sense to you right now :) )
[14:13] < Davbo> Yeah, I've looked at the code for this
[14:13] < j_baker> Good.
[14:14] < j_baker> Ok, now what you'll want to do is open up ~/kpuser/urls.ini
[14:15] < j_baker> You'll notice that there are three options under the [simple_app]
[14:15] < j_baker> ...section.
[14:15] < j_baker> regex, import_path, and app_obj
[14:15] < Davbo> ah yes, i see
[14:16] < j_baker> essentially what this says is "if the first part of the URL matches regex, from import_path import app_obj"
[14:17] < j_baker> The root section decides which application to run if somebody just goes to http://127.0.0.1:8080/
[14:19] < j_baker> One other thing to note: some applications will require more data than the standard data here.
[14:20] < Davbo> it looks fairly intuitive tbh
[14:20] < Davbo> docs are good too
[14:20] < j_baker> I put some other stuff on the wiki if you get lost.
[14:20] < j_baker> But I'll leave you alone if you've got it from here.
[14:21] < j_baker> (I'll get you a simple paste application though)
[14:21] < Davbo> Thanks j_baker
[14:21] < j_baker> np
[14:22] < Davbo> I can see what's going on with the bit that confused me earlier this morning anyway
[14:28] < j_baker> Yeah. A lot of the stuff in the WSGI code isn't very intuitive. :(
[14:29] < j_baker> Part of it is that Kamaelia's HTTP code was written for a VERY specific purpose and thus has a few foibles. Part of it is that Kamaelia WebServe essentially has two URL routing mechanisms (you just have to deal with one though).
[14:30] *** vmlemon_ has joined #kamaelia
[14:31] < Davbo> I understand the HTTP stuff, well I understand that you've needed it to be written for WSGI to work
[14:33] < j_baker> Well, it is pretty pluggable, so I didn't necessarily need to make any changes.
[14:33] < j_baker> It's just that I dislike the way you interface with it.
[14:34] < j_baker> And that also just so happens to be the hardest part to change, because you have to worry about breaking older apps.
[14:36] < Davbo> Yeah, it's better to just tag on your own support code
[14:36] < Davbo> seems reasonable anyway :)
[14:40] < Davbo> "j_baker: Well, it is pretty pluggable," /me finds this with a lot of Kamaelia
[14:44] < j_baker> Yup. That's the cool thing about it too. If somebody doesn't like WebServe, they can modify parts of it without modifying the rest of the program.
[14:44] < j_baker> And they even have the tools to go off and just write their own.
[14:47] < j_baker> Hmmm... I may have to hold off on python paste. I really don't know if I have time to get together a sample app before monday.
[14:47] *** j_baker had forgotten why he hates Paste.
[14:47] < Davbo> no problem
[14:48] < j_baker> You have to use eggs for everything in paste. Which means even for a simple little "hello world" type application, I have to put together a config file, a distutils setup.py file, and an egg-info file.
[14:49] < Davbo> Heh...I see what you mean
[14:49] < Davbo> Yeah, don't bother
[14:50] < j_baker> Yeah. If someone wants to do that, they can write the 5-6 lines of code themself for now. :)
[15:09] *** bcarlyon|laptop has joined #kamaelia
[16:19] *** vmlemon_ has joined #kamaelia
[16:31] *** Davbo has joined #kamaelia
[16:53] *** vmlemon_ has joined #kamaelia
[20:57] *** j_baker has joined #kamaelia