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 -~----------~----~----~----~------~----~------~--~---