I apologize for the lack of responsiveness. Some of us have been busy 
attending with PyCon Argentina and PyCon Brazil.

Everything you propose is sensible. cron @reboot should work but other 
users have reported problems with it. I believe there is an open ticket 
about it. 
I will look at this asap. Even if cron will be phased out, it remains the 
best way to run something @reboot.

Massimo

On Thursday, 29 November 2012 08:41:49 UTC-6, Magnitus wrote:
>
> I'd be curious to know if the lack of feedback on this thread so far is 
> due to the devs being incredibly busy or web2py lacking a genuine working 
> mechanism to execute scripts that have access to the models at startup only.
>
> I've tried a lot of permutations for setting a script at the start with 
> cron and I'm now convinced that the functionality is either broken or so 
> obscure that most non-devs users that rely on the documentation alone won't 
> be able to make it work (at least, not without a major head ache).
>
> Besides, it seems from the documentation that cron is being phased out 
> anyways, so I'm thinking it would be nice to provide some sort of hook for 
> users to insert a script at startup with access to the models instead.
>
> Inserting "from gluon import *" in the module won't work either since the 
> db handles are not defined in gluon, but in the models.
>
> I'm guessing that maybe the entire database definition could be moved to a 
> module instead (I'd have to reflect on all the implications of this though 
> it would definitely increase the performance at the cost of having to 
> reboot when you want to modify the db's structure), but that's not the 
> default out of the box architecture.
>
> Either way, inserting the script into a module that is included in a 
> controller is not a 100% satisfying solution since the script is actually 
> executed on the first page request and not really at startup.
>
> On Wednesday, 28 November 2012 12:55:00 UTC-5, Magnitus wrote:
>>
>> After some reflection, I suppose I could write a wrapper script that 
>> first runs python web2py.py --import_models --shell=<MyController>/default 
>> --run="<My Script>" and then starts web2py normally when using web2py 
>> standalone.
>>
>> That is one workaround.
>>
>> On Wednesday, 28 November 2012 11:19:01 UTC-5, Magnitus wrote:
>>>
>>> Hi gents,
>>>
>>> I have been populating my databases with groups (for access control) 
>>> manually for a while and then, switched to running a script that does it, 
>>> though I still run the script manually in the web2py context.
>>>
>>> Now, I'd like to programmatically implement this in a sensible way (in a 
>>> way that runs by itself and doesn't need human intervention at all).
>>>
>>> Obviously, you could just put the logic that does this in a model, but I 
>>> don't like the idea of needlessly increasing the size of my models with 
>>> this or running the logic to check the existance of and generate groups for 
>>> each request.
>>>
>>> Another alternative would be to put the logic in a module that would be 
>>> imported (with the idea that it would run on the first import which is done 
>>> only once), but then imported modules don't have access to the web2py 
>>> objects (notably, my database handle) unless you pass them on as parameters 
>>> which you cannot do in a module's global scope when it is first included.
>>>
>>> This leaves me with cron and running it as a cron job at boot time. 
>>> However, it isn't working.
>>>
>>> I tried running my script using the web2py context (ie, python web2py.py 
>>> --import_models --shell=<MyController>/default --run="<My Script>") and it 
>>> ran fine and generated the db entries I wanted.
>>>
>>> Then, I started my web2py execution with cron activated (ie, python 
>>> web2py.py -Y).
>>>
>>> I tried the two varations portayed in the example for the crontab 
>>> ("@reboot * * * * root *applications/<My App>/cron/Generate_groups.py" and 
>>> the shorter "@reboot root *applications/<My App>/cron/Generate_groups.py).
>>>
>>> And yes, my db transactions end with a db.commit().
>>>
>>> I've been banging my head against this for two hours and while I'm sure 
>>> whatever is wrong with this will come to me over time, this is definitely a 
>>> case of sooner would be better than later.
>>>
>>> Insights would be appreciated.
>>>
>>

-- 



Reply via email to