I have no objection to adding this feature. I do not like the !*"
prefix.

I think we can do:

@hourly root file -> exec file in Popen
@hourly root file.py -> exec file in Popen with python
@hourly root *file.py -> exec file in Popen with python -S <app> -M -R
<file>
@hourly root **file.py -> exec file in Popen with python -S <app> -R
<file>
@hourly root *file -> exec file in Popen with python -S <file> -M
@hourly root **file -> exec file in Popen with python -S <file>
@hourly root *"data" -> exec "data" without Popen with environment as -
M
@hourly root **"data" -> exec "data" without Popen without environment
as -M
@hourly root *"filename" -> execfile filename without Popen with
environment as -M
@hourly root **"filename" -> execfile filename without Popen without
environment as -M
(we can distinguish data from filename checking if "..." starts with
'./' or '/'.)

I would take a patch in this direction. You only add the last 4
options at the end of the cron file. There is nothing else that needs
to be done I think.

Massimo



All is needed it a

On Feb 8, 6:30 pm, John Heenan <johnmhee...@gmail.com> wrote:
> Hi
>
> I stated "My point is can we have an option to:"
>
> Maybe I should code up a patch for cron.py and submit it for
> examination. Cron.py is impressive, I am not criticising it or
> attacking its approach.
>
> The option I am requesting are ADDITIONS to cron.py that are TRIVIAL
> to code in as additions to cron.py. Web2py already has a prepared
> environment ready to be passed for exec use.
>
> To reiterate, the option I am requesting is an additional option (not
> a replacement) to do an exec (or execfile) on a file that ends
> with .py (or .pyc) AND an option to do an exec on a string (such as
> "import a; a.mycronaction()")
>
> For example, suppose ! is chosen to indicate not to use the default of
> the Popen class wrapper but to use exec instead, then the following is
> an example of use:
>
> */10        *        *        *        *        root !
> **expire_sessions.py  #use the web2py environment with execfile on
> the .py file but do not execute models
> or
> */10        *        *        *        *        root !*"import a;
> a.mycronaction()" #use the web2py environment with exec on the string
> and include execution of models
>
> I do not want to become involved in a grand philosophical or
> ideological debate about the merits or otherwise of using the Popen
> wrapper class verses the internal Python exec (or execfile) function.
> For trivial tasks (such as deleting stale session files) the Popen
> class wrapper is overkill. Using Popen involves unnecessary extra RAM
> use and process invocation. Invoking a Python process is very
> expensive in CPU and RAM terms. In fact Python is impractical in a web
> environment unless the Python process remains persistent, This is the
> reason why hosting is relatively expensive for python web solutions
> compared to PHP and Perl.
>
> While such concerns might seem trivial for tasks that are not repeated
> often, it is not trivial if hosting is in an environment where there
> are penalties for exceeding allocated RAM, such as I believe occurs at
> Webfaction, popular with those trialling web2py.
>
> For trivial housekeeping tasks, just a minimal (non models)
> environment associated with the application is adequate, such as is
> currently passed in for use with Popen.
>
> If tasks are so involved that processes are at a non negligible risk
> of choking then users will hardly be concerned about using execfile
> instead of Popen and will instead code up an independent supervisory
> process outside web2py.
>
> Deadlock or race conditions are not any more of an issue using exec
> than with normal code (provided the code passed in for exec does
> nothing out of the ordinary). A new thread is not invoked.
>
> As is, cron.py waits for a Popen invoked process to end without a
> supervisor which can result in a lock up of web2py.
>
> It can be argued that there is a lack of hard quantified information
> about the resources used by Python based web frameworks. Those who
> develop websites and GUIs have frequently little care about boring
> issues of resource usage. I bothered to take a look and was horrified
> by the memory usage of Python. We need to show respect for practical
> issues associated with using Python. Otherwise web2py and other
> frameworks risk becoming relegated to academic toys that are from
> 'enterprise' class. Java based frameworks are fighting back. Sun is
> pushing GlassFish heavily into the enterprise environment.
>
> Python based frameworks cannot expect to be competitive with PHP at
> what PHP is best at (low resource usage) if Python frameworks don't
> address issues in a practical way that are holding back their adoption
> (such as resource usage leading to expensive hosting).
>
> John Heenan
>
> On Feb 8, 11:40 pm, AchipA <attila.cs...@gmail.com> wrote:
>
> > Fiddling with this now, but have a few concerns, so I'd like Massimo
> > to chime is as the exec expert. The main reason for going POpen is to
> > have a clean, thread safe environment, and with exec I'm not sure we
> > won't hit race conditions or deadlock possibilities, especially if we
> > touch on models. Some help how to exec stuff with the proper
> > environment would be welcome :)
>
> > Another thing to note is that when execing, we no longer have control
> > over what we execute - i.e. while we can kill/clean zombie POpened
> > processes, if we get stuck in just another thread (=with exec) it's
> > stuck there until the whole web2py/webserver is restarted.
>
> > On Jan 31, 7:27 am, John Heenan <johnmhee...@gmail.com> wrote:
>
> > > I have not get my point across.
>
> > > By 'Python exec' I mean using the 'exec' internal Python command. I
> > > don't mean 'Python exec' as a shorthand for 'execute a new Unix,
> > > Windows or Mac OS process under the ownership of the cron code written
> > > in Python'.
>
> > > I have just examined the most recent trunk version of cron.py 
> > > inhttp://code.google.com/p/web2py/source/browse/gluon/contrib/cron.py
>
> > > For .py files the Popen command is still executed using the
> > > cronlauncher class that uses Popen
>
> > > For those of us trying ot keep RAM usage down, who don't want to use a
> > > regular crontab and who only want to run Python files, using Popen is
> > > not necessasry.
>
> > > My point is can we have an option to:
>
> > > 1) Just do an Python exec on an opened file contents (with ot without
> > > the models envrionment), instead of doing a Popen
> > > 2) Have an option to do an Python exec on a string, such as on "import
> > > a; a.mycronaction()"
>
> > > Thanks
>
> > > John Heenan
>
> > > On Jan 31, 2:17 pm, mdipierro <mdipie...@cs.depaul.edu> wrote:
>
> > > > Unless we misunderstand we have that already. The file just needs to
> > > > end in .py as in
>
> > > > * * * * * root myscript.py
>
> > > > You can also call actions
>
> > > > * * * * * root *myscript.py
>
> > > > so that models are imported.
>
> > > > On Jan 30, 8:36 pm, John Heenan <johnmhee...@gmail.com> wrote:
>
> > > > > Hi AchipA
>
> > > > > Another feature request, if the cron file is a python file, how about
> > > > > a cron option to open the file and do an exec on the file contents?
>
> > > > > Thanks
>
> > > > > John Heenan
>
> > > > > On Jan 31, 12:33 pm, John Heenan <johnmhee...@gmail.com> wrote:
>
> > > > > > Hi AchipA
>
> > > > > > Your cron is nice work and neatly deals with the messy side of
> > > > > > launching an independent OS process and waiting for it to finish.
>
> > > > > > For those of us who do not wish to launch an independent process (to
> > > > > > keep down memory use) and are happy to stick with Python for cron
> > > > > > jobs, following is a request to add in the following feature to your
> > > > > > cron fpr web2py.
>
> > > > > > Provide a mechanism to just perform a Python exec on a string
> > > > > > statment.
>
> > > > > > For example a string statement might be
> > > > > > "import a; a.mycronaction()"
>
> > > > > > Thanks
>
> > > > > > John Heenan
>
> > > > > > On Jan 31, 6:52 am, AchipA <attila.cs...@gmail.com> wrote:
>
> > > > > > > Just to chime in, I'm still alive and preparing an update to cron 
> > > > > > > as
> > > > > > > quite a few things changed since I last touched it. As for the
> > > > > > > questions - all cron modes support the * and ** syntax, and yes, 
> > > > > > > cron
> > > > > > > files can be modified on the fly.
>
> > > > > > > On Jan 26, 4:00 pm, mdipierro <mdipie...@cs.depaul.edu> wrote:
>
> > > > > > > > I did not write cron personally and I am still trying to 
> > > > > > > > understand
> > > > > > > > some of it, Attila did.
> > > > > > > > I am in the looking at cron these days to treamline it a bit 
> > > > > > > > and I am
> > > > > > > > trying to understand better as it works.
>
> > > > > > > > Since windows does not have cron, you should use web2py 
> > > > > > > > hardcron. It
> > > > > > > > should work on windows 7 but I have not tried it. The "root" is 
> > > > > > > > the
> > > > > > > > username that should run the cron task. It is only used by 
> > > > > > > > extcron and
> > > > > > > > ignored otherwise (but must be there, for compatibility of 
> > > > > > > > syntax).
>
> > > > > > > > I am not sure if tasks staring with * or ** run under extcron 
> > > > > > > > so I
> > > > > > > > suggest not using pycron. Given hardcron you do not need pycron
> > > > > > > > anyway.
>
> > > > > > > > Mind that this is in the process of being refactored a bit. 
> > > > > > > > Perhaps
> > > > > > > > you can help with testing and debugging so you can be sure it 
> > > > > > > > works as
> > > > > > > > you need it.
>
> > > > > > > > On Jan 26, 4:27 am, Oguz Yarimtepe <oguzyarimt...@gmail.com> 
> > > > > > > > wrote:
>
> > > > > > > > > Hi,
>
> > > > > > > > > I was trying to use the cron property of web2py at my 
> > > > > > > > > project. I am
> > > > > > > > > using web2py under windows 7. I had installed wamp server 
> > > > > > > > > with mod_wsgi.
> > > > > > > > > According to the documentation it is suggested to use the 
> > > > > > > > > external cron.
> > > > > > > > > I tried to test the soft cron issue so i added the below line 
> > > > > > > > > to my
> > > > > > > > > application crontab
>
> > > > > > > > > #crontab
> > > > > > > > > */2        *        *        *        *        root *decrease/
>
> > > > > > > > > and at the controllers directory the decrease file is as is
>
> > > > > > > > > # coding: utf8
>
> > > > > > > > > def index():
>
> > > > > > > > >      f=file("C:\\Users\\oguz\\hede.txt", "w+")
> > > > > > > > >      f.write("ok")
> > > > > > > > >      f.close()
>
> > > > > > > > >      return dict()
>
> > > > > > > > > So when the application is loaded shouldn't i see the txt is 
> > > > > > > > > created at
> > > > > > > > > every 2 minutes?
>
> > > > > > > > > What is the usage of the root keyword at the crontab file? 
> > > > > > > > > For windows
> > > > > > > > > application what should it be?
>
> > > > > > > > > And if i want to use the external cron method, it says i 
> > > > > > > > > should add a
> > > > > > > > > line to system cron file. This doesn't sound me so effective 
> > > > > > > > > at my
> > > > > > > > > application so i will be prefering to use something like 
> > > > > > > > > pycron. Anybody
> > > > > > > > > tested these things at windows 7?
>
>

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

Reply via email to