In trunk now.
On Saturday, 9 June 2012 10:46:27 UTC-5, Jan Rozhon wrote: > > Hi, any update on this topic? I am just facing that same issue, Thanks > Michael for writing down a workaround. > > Jan. > > Dne středa, 23. května 2012 16:21:02 UTC+2 Massimo Di Pierro napsal(a): >> >> Please open a ticket about this. cron was not designed to do this but >> there is no reason it cannot do it. >> >> On Tuesday, 22 May 2012 22:33:57 UTC-5, Michael Toomim wrote: >>> >>> I'm finding multiple problems getting cron to start the scheduler. >>> Here's the cron line: >>> @reboot dummyuser python web2py.py -K utility >>> ...but it does not work without modifying web2py source. >>> >>> First, let's get an easy bug out of the way. The web2py book gives this >>> example for @reboot: >>> >>> @reboot * * * * root *mycontroller/myfunction >>> >>> But those asterisks shouldn't be there for @reboot tasks. Can we remove >>> them from the book? >>> >>> Now, when I put that line into my crontab and run web2py, it gives me >>> this error: >>> >>> web2py Web Framework >>> Created by Massimo Di Pierro, Copyright 2007-2011 >>> Version 1.99.7 (2012-03-04 22:12:08) stable >>> Database drivers available: SQLite3, pymysql, psycopg2, pg8000, CouchDB, >>> IMAP >>> Starting hardcron... >>> please visit: >>> http://192.168.56.101:8000 >>> use "kill -SIGTERM 10818" to shutdown the web2py server >>> Exception in thread Thread-2: >>> Traceback (most recent call last): >>> File "/usr/lib/python2.6/threading.py", line 532, in __bootstrap_inner >>> self.run() >>> File "/home/toomim/projects/utility/web2py/gluon/newcron.py", line >>> 234, in run >>> shell=self.shell) >>> File "/usr/lib/python2.6/subprocess.py", line 633, in __init__ >>> errread, errwrite) >>> File "/usr/lib/python2.6/subprocess.py", line 1139, in _execute_child >>> raise child_exception >>> OSError: [Errno 2] No such file or directory >>> >>> This is an error in subprocess.Popen. I inserted some print statements >>> and found that it's calling it like this: >>> subprocess.Popen('python web2py.py -K utility') >>> >>> This is incorrect, it should be: >>> subprocess.Popen(['python', 'web2py.py' '-K' 'utility']) >>> >>> I was able to make it work by adding a call to split(), as you can see >>> here (in newcron.py: cronlauncher.run()): >>> def run(self): >>> import subprocess >>> proc = subprocess.Popen(self.cmd.split(), >>> >>> But I do not understand how anybody could have made this work before, >>> without adding a split() call? And what confuses me further is that there >>> is an explicit join() call in the __init__() method that runs immediately >>> beforehand, as if we really did NOT want to have lists: >>> >>> elif isinstance(cmd,list): >>> cmd = ' '.join(cmd) >>> >>> So does cron @reboot work for anybody running a script? It seems >>> impossible for it to work right now. Is this a bug? >>> >>> Finally, it would be great if we did not have to pass in a dummy user to >>> each cron line that does nothing... >>> >>