r3wp [groups: 83 posts: 189283]
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r3wp

[!Cheyenne] Discussions about the Cheyenne Web Server

Maxim
18-Apr-2011
[9903]
so I guess, the best way to configure the handlers through cheyenne's 
httpd.cfg system,  is to save out a temporary configuration file 
on the fly when the conf parser is run.  


this file would be executed by my handler when it is launched by 
any of the worker processes.
Dockimbel
19-Apr-2011
[9904x2]
Looking at COLLECT code again, DO's arity is not 3, it is 2 or 10, 
depending on how one count arguments.
Temporary conf file: right, that should be the simplest solution.
Maxim
19-Apr-2011
[9906x2]
yeah... I've changed my solution a bit.   the handler now has a variable 
to know if its been configured yet, and if it has, it skips that 
part of the code.   so even if I get the cfg at each request, I ignore 
it.


The cool thing is that my mod really doesn't need much configuration 
and most other standard configs are useless to it, so I commented 
just about all of them in my httpd.cfg and my mod still works.  :-)


very lean on the cheyenne side.  I do all the heavy lifting in the 
handler, so it can scale pretty well.
one strange thing though... in the task-master.r  lib I set workers 
like this:

		pool-start: 1	; number of helper process when Uniserve starts
		pool-max: 	2	; maximum number of helper process


and it always opens up 4 anyways.  is there anything else to do?
Dockimbel
19-Apr-2011
[9908]
These default settings are superseded by the ones from %cheyenne.r.
Maxim
19-Apr-2011
[9909]
ah.
Dockimbel
19-Apr-2011
[9910]
You need to change them in %cheyenne.r (I should add them to the 
config file some day).
Maxim
19-Apr-2011
[9911x3]
maybe I could add a little cfg option for them... my client is going 
to need this.
yep... works  thanks
btw, I'm starting to feel like a cheyenne mod/handler code ninja 
 ;-)
Dockimbel
19-Apr-2011
[9914]
You can, except you, I think only Philippe Legoff got that far :-) 
BTW, he wrote a few nice articles (french only) on Cheyenne usage: 
http://pl.legoff.free.fr/dotclear/rebol-fondation/index.php/?q=cheyenne
Henrik
19-Apr-2011
[9915]
I'm having a strange problem with one virtual-root that works and 
another that doesn't. The one that doesn't simply sends back a 404.
Dockimbel
19-Apr-2011
[9916]
Can you show me the config definition for these two webapps?
Henrik
19-Apr-2011
[9917x2]
privately
What's the best way to debug app-init.r now? I can't see whether 
a bug happens or whether it runs ON-APPLICATION-START at all.
Dockimbel
19-Apr-2011
[9919x2]
Use 'debug/probe or 'debug/print to emit debug logs in %trace.log 
file.
If an error is caught in 'on-applicaion-start, it will appear in 
%trace.log.
Henrik
19-Apr-2011
[9921]
nothing shows up, so I guess ON-APPLICATION-START is never run.
Dockimbel
19-Apr-2011
[9922]
probably (see my private message)
onetom
19-Apr-2011
[9923x6]
i have an rsp like this:

<% probe delta-time [ ... switch request/method [ get  [...]   post 
[...] ]  ... ] %>

if i make a GET, it's fast:

$ time curl -s -D- http://localhost:8080/docs/rfq3 >/dev/null
0:00:00.003815
real    0m0.026s


if i make a post, the rsp part is still fast, but the overall request 
is damn slow (even consequent requests too):

$ time curl -d @xxx -D- http://localhost:8080/docs/rfq3
0:00:00.004595
real    0m2.034s
so what is this 100 fold difference between GET and POST?
is it just curl? i will try from rebol 1st
from rebol, it's okay...


>> delta-time [read/custom http://localhost:8080/docs/rfq3 reduce 
['post read %xxx] ]
connecting to: localhost
== 0:00:00.034002
it has something to do with the connection keep-alive
curl --http1.0 ... is fast
Maxim
19-Apr-2011
[9929x2]
yes, the http connection will not close until it times out.


if the curl command line waits for ip close to return, its possible 
that is what is happening.
there are probably ways control this via some curl command line options?
onetom
19-Apr-2011
[9931x2]
i was trying an explicite response/set-header 'connection "close", 
but it didn't help..
see the --http1.0 option above. with that there is no Connection: 
keep-alive  header sent  (or maybe there is, but in HTTP/1.0 mode 
it is ignored)
Maxim
19-Apr-2011
[9933x2]
it shoudn't send it.  the servers are always free to implement more 
headers than the spec.

also realize that if you use http 1.0 there are no virtual hosts!! 
supported so its a bit deal.
bit = big
onetom
19-Apr-2011
[9935]
with the --no-keepalive option, this magic 2seconds delay is still 
there
BrianH
19-Apr-2011
[9936]
If you haven't figured out the COLLECT rewrite yet, let me take a 
look.
onetom
19-Apr-2011
[9937x2]
hmm... does cheyenne handle the Expect: 100-continue header?

i couldn't really find any signs of it. the http-responses mentiones 
the code 100, but that's all, im afraid
Here is a workaround (by raping curl):


$ time curl -H 'Expect:' -d @xxx -D- http://localhost:8080/docs/rfq3
real    0m0.082s
Dockimbel
19-Apr-2011
[9939x3]
HTTP code 100: not supported, if you have a (not obscure) use-case 
for that, I might add support for it.
Keep-alive: IIRC, Cheyenne doesn't honor the "Connection: close" 
case with HTTP1.1.
BrianH: I've found a workaround for COLLECT (just replacing DO by 
*DO which refers to the native function in RSP environment). Can 
you tell me if there are other recently added mezzs (from R2/Forward 
mainly) that rely on DO in their implemenation?
Maxim
19-Apr-2011
[9942]
the module stuff, probably.
Dockimbel
19-Apr-2011
[9943x2]
I would need to patch them one by one when used in RSP.
(should be a one-line patch like for COLLECT, so not a big deal)
BrianH
19-Apr-2011
[9945x2]
APPLY and MAP-EACH, so far.
Both of them do a block though.
Dockimbel
19-Apr-2011
[9947x2]
Thanks, will patch them too.
Oh, if it's a block!, then it should work in RSP.
BrianH
19-Apr-2011
[9949x2]
IN-DIR also does a block.
None of need rebinding though, as they get all of their non-locally-bound 
words from the calling context, so it might be worth patching them 
anyways.
Dockimbel
19-Apr-2011
[9951]
Will look into that.
onetom
19-Apr-2011
[9952]
hmm... it was more troublesome to include the R2/Forward as we thought... 
:/