Jython does support TCP_NODELAY, but it does so in the Java
fashion...that is to say only on a client socket.  The short story is
this: most platforms allow you to set socket options to server
(accepting) sockets and the accepted (client) sockets that come from
them inherit the options from the server socket.  This varies based on
platform.  Some platforms inherit all options, some just TCP_NODELAY.
Java is a little different in that it inherits none and consequently
it does not allow setting TCP_NODELAY to a server socket.

The good news is that it does support it on the client socket it just
that you have to socket.setsockopt() on the client connection after
you accept it.  This behavior is currently up for debate right now
with Jython.  See http://bugs.jython.org/issue1309

Now the blocker that I ran into with Jython + web2py is the template
module.  web2py templates rely heavily on regexps.  This is great
because it makes them fast...but Jython does something different with
cPython such that everytime I try to render a template, I get a
"Recursion limit exceeded error".  Maybe Regexps are not the same in
Java as in Python (Perl).  This is one I haven't been able to track
down.

Java (and hence Jython) is great from a concurrency perspective since
it is fully multi-threaded whereas cPython has the GIL to deal with.
It would be awesome if we could find a happy marriage between web2py
templates and Jython.

-tim

On Nov 9, 3:04 am, Vasile Ermicioi <elff...@gmail.com> wrote:
> I have to convince someone that python is better than Java (and even can
> work with Java) -
> Jython+Web2py is my best argument :)
>
> On Mon, Nov 9, 2009 at 8:38 AM, mdipierro <mdipie...@cs.depaul.edu> wrote:
>
> > I changed it in trunk so that it is automatic and now (again) web2py
> > works with Jython out of the box. I have email the author of
> > wsgiserver hoping this is fixed in the official distribution.
>
> > On Nov 8, 1:56 pm, mdipierro <mdipie...@cs.depaul.edu> wrote:
> > > jython does not seem to support socket option no_delay. In gluon/
> > > wsgiserver.py replace
>
> > >  nodelay = True
>
> > > with
>
> > >  nodelay = False
>
> > > Massimo
>
> > > On Nov 8, 1:48 pm, Nik <nitral...@googlemail.com> wrote:
>
> > > > Hi folks,
>
> > > > For testing web2py with jython I have started it
> > > > by executing  "jython web2py.py" and got the following
> > > > error message:
>
> > > > ==================================================================
> > > > saturn:web2py_1.71.2 nik$ jython web2py.py
> > > > WARNING:root:no file locking
> > > > WARNING:root:unable to import dbhash
> > > > WARNING:root:GUI not available because Tk library is not installed
> > > > default applications appear to be installed already
> > > > web2py Enterprise Web Framework
> > > > Created by Massimo Di Pierro, Copyright 2007-2009
> > > > Version 1.71.2 (2009-11-04 15:48:54)
> > > > Database drivers available:
> > > > Starting cron...
> > > > choose a password:********
> > > > please visit:
> > > >        http://127.0.0.1:8000
> > > > use "kill -SIGTERM 949" to shutdown the web2py server
> > > > Traceback (most recent call last):
> > > >   File "web2py.py", line 20, in <module>
> > > >     gluon.widget.start(cron=True)
> > > >   File "/Users/nik/work/web/web2py_1.71.2/gluon/widget.py", line 852,
> > > > in start
> > > >     server.start()
> > > >   File "/Users/nik/work/web/web2py_1.71.2/gluon/widget.py", line 852,
> > > > in start
> > > >     server.start()
> > > >   File "/Users/nik/work/web/web2py_1.71.2/gluon/main.py", line 710, in
> > > > start
> > > >     self.server.start()
> > > >   File "/Users/nik/work/web/web2py_1.71.2/gluon/wsgiserver.py", line
> > > > 1884, in start
> > > >     self.socket.listen(self.request_queue_size)
> > > >   File "<string>", line 1, in listen
> > > >   File "/Users/nik/Applications/jython2.5.1/Lib/socket.py", line 824,
> > > > in listen
> > > >     self._config()
> > > >   File "/Users/nik/Applications/jython2.5.1/Lib/socket.py", line 824,
> > > > in listen
> > > >     self._config()
> > > >   File "/Users/nik/Applications/jython2.5.1/Lib/socket.py", line 763,
> > > > in _config
> > > >     self.sock_impl.setsockopt(level, optname, self.pending_options
> > > > [ (level, optname) ])
> > > >   File "/Users/nik/Applications/jython2.5.1/Lib/socket.py", line 282,
> > > > in setsockopt
> > > >     raise error(errno.ENOPROTOOPT, "Socket option '%s' (level '%s')
> > > > not supported on socket(%s)" % (_constant_to_name(option),
> > > > _constant_to_name(level), str(self.jsocket)))
> > > > socket.error: (42, "Socket option 'TCP_NODELAY' (level 'IPPROTO_TCP')
> > > > not supported on socket(ServerSocket[addr=/
> > > > 127.0.0.1,localport=8000])")
> > > > ==================================================================
>
> > > > Am I missing something here?
>
> > > > Regards
> > > > Nik
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To post to this group, send email to web2py@googlegroups.com
To unsubscribe from this group, send email to 
web2py+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to