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/

Reply via email to