My logs indicate that a web2py soft cron command to execute a Python file at or after a given interval is achieved by forking off another Python instance, instead of doing an exec on the contents of the file. A sample from my standard output logs is below.
This is confirmed from examining web2py/gluon/contrib/cron.py I see that a Python Popen is executed. This forks off another process, connects standard input, output and error and then waits. This is overkill if the only task of a crontab is to expire sessions using Python code and there is a goal to minimise memory hungry processes occupying memory, no matter for how short, that might risk bringing the swap file into use. Massimo's way of expiring sessions from the model file is less resource intensive, if Python code is used. John Heenan 2010-01-06 15:15:13,876 - INFO - WEB2PY CRON (soft): Application: zgus executing **applications/admin/cron/expire_sessions.py in /home/zgus/ web2py/web2py at 2010-01-06 15:15:13.876653 2010-01-06 15:15:14,636 - INFO - WEB2PY CRON Call returned: default applications appear to be installed already web2py Enterprise Web Framework Created by Massimo Di Pierro, Copyright 2007-2009 Version 1.67.2 (2009-09-28 16:29:33) Database drivers available: SQLite3 WARNING:root:GUI not available because Tk library is not installed On Jan 6, 2:19 pm, mdipierro <mdipie...@cs.depaul.edu> wrote: > I guess the book needs some cleanup in this respect. > > I normally expire sessions in the model iteself. No cron and no > process. > > On Jan 5, 10:08 pm, John Heenan <johnmhee...@gmail.com> wrote: > > > I am a bit of a loss though as to why page 121 provides the following > > web2py specific web2py/applications/xxx/cron/crontab entry example for > > expiring sessions: > > > @hourly root *applications/admin/cron/expire_sessions.py > > > AND why page 123 provides an example of how to run web2py crontabs > > from /etc/crontab (called 'hard cron' by web2py): > > > 0-59/1 * * * * web2py cd /var/www/web2py/ && python web2py.py -C -D 1 > > > >> /tmp/cron.output 2>&1 > > > YET page 302 in the the deployment recipes section appears to prefer > > keeping a python process lying around in memory to expire sessions > > that is only used relatively infrequently. > > > I imagine most of us on this list are severely constrained with regard > > to resources for live deployment of web2py. I use a 256MB VPS and make > > sure I only run the absolute minimum number of processes. Some on this > > list will have even even less memory available (such as if using > > webfaction). > > > I have only one process running that goes above 3MB memory use: a > > single persistent python process that runs all my web2py apps and uses > > 37MB of memory . The webserver (lighttpd) occupies 2.3MB and does not > > fork. These memory sizes occupy RAM and swapped memory if not enough > > RAM memory is available. The potential memory use of python is 236MB > > (VSZ size). > > > Under these circumstances the web2py labelled 'soft cron' option is > > attractive as no extra processes are spawned: the python process that > > runs web2py runs web2py specific crontabs in web2py/applications/xxx/ > > cron/crontab. > > > John Heenan > > > On Jan 6, 2:11 am, mdipierro <mdipie...@cs.depaul.edu> wrote: > > > > thanks > > > > On Jan 5, 9:48 am, John Heenan <johnmhee...@gmail.com> wrote: > > > > > On Jan 6, 1:40 am, John Heenan <johnmhee...@gmail.com> wrote: > > > > > > Here is a hint for using the book listed command > > > > > nohup python web2py.py -S yourapp -R scripts/sessions2trash.py & > > > > > in /etc/rc.local, to enable automatic start of this script on boot. > > > > > This hint is of course only relevant if you don't already use /etc/ > > > > rc.local to start up web2py. I use a scrpt in /etc/init.d instead to > > > > start up web2py. > > > > > John Heenan
-- You received this message because you are subscribed to the Google Groups "web2py-users" group. To post to this group, send email to web...@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.