If you want to run just a single, persistent WSAPI application it is much easier to use this as your idlocutor.fcgi script:
---- pcall(require,"luarocks.require") local fastcgi = require "wsapi.fastcgi" local myapp = require "myapp" fastcgi.run(myapp.run) ---- Where myapp.run is your WSAPI entry point (that takes a WSAPI environment). BTW, what version of WSAPI are you using? The common loader had a bug. -- Fabio Mascarenhas On Tue, Jan 4, 2011 at 4:32 PM, Tiago Katcipis <katci...@inf.ufsc.br> wrote: > On Mon, Jan 3, 2011 at 11:27 AM, Tiago Katcipis <katci...@inf.ufsc.br>wrote: > >> >> >> On Mon, Jan 3, 2011 at 11:15 AM, Fabio Mascarenhas >> <mascaren...@acm.org>wrote: >> >>> With isolated=true WSAPI will run your scripts in a pool of Rings, and >>> will collect and respawn the Rings periodically, >>> >> >> besides periodically, on any 4XX and on DELETE method it will be respawned >> too? just for curiosity :-). >> >> >>> so isolated=false is the behavior you want, as you are only running a >>> single script anyway. >>> >> >> everything is working ok now, it took some time and a good read on the >> source to understand this clearly. >> > > With a little further testing...things seems to not be that ok after all. > > After making a lot of requests (GET, POST, DELETE) wsapi starts to respond > the following: > > *<html> > <head><title>WSAPI Error in Application</title></head> > <body> > <p>There was an error in the specified application. > The full error message follows:</p> > <pre> > /usr/lib/lua/5.1/wsapi/common.lua:78: not a valid WSAPI application > stack traceback: > [C]: in function 'error' > /usr/lib/lua/5.1/wsapi/common.lua:78: in function > </usr/lib/lua/5.1/wsapi/common.lua:65> > (tail call): ? > (tail call): ? > /usr/lib/lua/5.1/wsapi/common.lua:710: in function > 'load_wsapi_persistent' > /usr/lib/lua/5.1/wsapi/common.lua:728: in function > </usr/lib/lua/5.1/wsapi/common.lua:721> > (tail call): ? > (tail call): ? > [C]: in function 'xpcall' > /usr/lib/lua/5.1/wsapi/common.lua:254: in function 'run_app' > /usr/lib/lua/5.1/wsapi/common.lua:281: in function 'run' > /usr/lib/lua/5.1/wsapi/fastcgi.lua:40: in function 'run' > ./idlocutor.fcgi:20: in main chunk > [C]: ? > </pre> > </body> > </html> > > *It happens randomly (taking a look at the debug of my fastcgi, no error > is reported, everything is working fine, suddenly this error starts and my > fastcgi is not even called), and what could mean "not a valid WSAPI > application" ??? My lua script stopped to be a WSAPI application ? > > It does not try to reload the script, the only way i can get out of it is > by killing the fastcgi process (wsapi.fastcgi). So the server starts a new > one and everything goes back to normal...until the problem happens again.* > > *someone has a hint of what this could be? it started to happens with the > isolated = false option.* > > *Best regards, > Katcipis* > > * > >> >> Thanks for the help, >> Katcipis >> >> >>> >>> -- >>> Fabio Mascarenhas >>> >>> On Wed, Dec 29, 2010 at 2:48 PM, Tiago Katcipis <katci...@inf.ufsc.br>wrote: >>> >>>> >>>> >>>> On Wed, Dec 29, 2010 at 11:31 AM, Tiago Katcipis >>>> <katci...@inf.ufsc.br>wrote: >>>> >>>>> Hi all, >>>>> >>>>> I'm having some problem using wsapi-fastcgi with lighthttpd. I got >>>>> everything working fine, but every time an error occurs (any 4xx) or >>>>> someone >>>>> send a DELETE method request my script is reloaded. I don't want the >>>>> script >>>>> to reload because every time this happens i reconnect to the db and the >>>>> older connections get lost and the db continues to consume resources (on >>>>> this case is mongo db, a thread gets locked forever each time my script is >>>>> reloaded). >>>>> >>>>> When there is no error 4XX or DELETE everything works as expected, the >>>>> script is not reloaded on each request and the connection is reused (i run >>>>> an init function when the script is loaded, but it is supposed to run only >>>>> once and them handle the requests without reloading). >>>>> >>>>> Here is the configuration that i run the fastcgi: >>>>> >>>>> #!/usr/bin/lua >>>>> local common = require "wsapi.common" >>>>> local fastcgi = require "wsapi.fastcgi" >>>>> >>>>> local ONE_HOUR = 60 * 60 >>>>> local ONE_DAY = 24 * ONE_HOUR >>>>> >>>>> local wsapi_loader = common.make_loader{ >>>>> isolated = true, -- isolate each script in its own Lua >>>>> state >>>>> >>>> >>>> Taking a good look at the code i just changed the isolated = true to >>>> false, so it would call the make_persistent_loader instead of the isolated. >>>> It worked fine just as i expected, still don't know why with isolated = >>>> true >>>> it reloads the script when returning a 4XX or receiving a DELETE. >>>> >>>> I'm working with only one script, so the problem seems resolved to me. >>>> >>>> Sorry for the noise. >>>> >>>> Best regards, >>>> Katcipis >>>> >>>> >>>>> filename = nil, -- if you want to force the launch of a single >>>>> script >>>>> launcher = "idlocutor.fcgi", -- the name of this script >>>>> reload = false, -- if you want to reload the application >>>>> on every request >>>>> period = ONE_HOUR, -- frequency of Lua state staleness >>>>> checks >>>>> ttl = ONE_DAY, -- time-to-live for Lua states >>>>> vars = -- order of checking for the path of the >>>>> script >>>>> { "SCRIPT_FILENAME", >>>>> "PATH_TRANSLATED" } >>>>> } >>>>> >>>>> fastcgi.run(wsapi_loader) >>>>> >>>>> >>>>> i tried to take a look on wsapi.fastcgi and them on wsapi.commom to >>>>> understand why it could be reloading my script, i understood that when the >>>>> file is modified or reload is true it will reload the script on a new >>>>> lua_State, but i was unable to find another moment when this is >>>>> done..related to the errors (the rings logic is not too much easy to >>>>> understand, specially to me, never used rings). >>>>> >>>>> this reload problem (or maybe expected behaviour....i don't know) is >>>>> caused by wsapi? wsapi-fastcgi? or is something related to lighthttpd? (i >>>>> doubt of that because the pid of the fastcgi process remains the same...it >>>>> seems that wsapi is reloading the script internally) I'm kinda new to web >>>>> development, sorry I'm asking something stupid. >>>>> >>>>> >>>>> best regards, >>>>> Katcipis >>>>> >>>> >>>> >>>> >>>> -- >>>> http://www.getgnulinux.org/windows >>>> >>>> _______________________________________________ >>>> Kepler-Project mailing list >>>> Kepler-Project@lists.luaforge.net >>>> http://lists.luaforge.net/cgi-bin/mailman/listinfo/kepler-project >>>> http://www.keplerproject.org/ >>>> >>> >>> >>> _______________________________________________ >>> Kepler-Project mailing list >>> Kepler-Project@lists.luaforge.net >>> http://lists.luaforge.net/cgi-bin/mailman/listinfo/kepler-project >>> http://www.keplerproject.org/ >>> >> >> >> >> -- >> http://www.getgnulinux.org/windows >> > > > > -- > http://www.getgnulinux.org/windows > > _______________________________________________ > Kepler-Project mailing list > Kepler-Project@lists.luaforge.net > http://lists.luaforge.net/cgi-bin/mailman/listinfo/kepler-project > http://www.keplerproject.org/ >
_______________________________________________ Kepler-Project mailing list Kepler-Project@lists.luaforge.net http://lists.luaforge.net/cgi-bin/mailman/listinfo/kepler-project http://www.keplerproject.org/