4

I know that I can run the scheduler manually by using

python web2py.py -K myapp

But where should this be specified in production environment? I am using standard web2py deployment script for apache, on ubuntu.

Euphorbium
  • 1,177
  • 5
  • 17
  • 35
  • For the production you have to use [mod_wsgi](http://web2py.com/books/default/chapter/29/13/deployment-recipes#mod_wsgi). This will work with apache. – Nilesh Mar 06 '15 at 12:25

3 Answers3

8

Just to round the picture. Using Debian or other Linux distributions after 2015, the way to go is systemd. For systemd the following steps have to be taken: Create the file /etc/systemd/system/web2py-sched.service Containing the following

[Unit]
Description=Web2Py scheduler service

[Service]
ExecStart=/usr/bin/python /home/www-data/web2py/web2py.py -K <yourapp>
Type=simple

[Install]
WantedBy=multi-user.target

Then install the service calling:

sudo systemctl enable /etc/systemd/system/web2py-sched.service 
Sherlock70
  • 564
  • 10
  • 24
3

With Ubuntu 12.04 I make it manually:

  1. in /etc/init directory create web2py-scheduler.conf file:

    description     "Web2py scheduler"
    start on filesystem or runlevel [2345]
    stop on runlevel [!2345]
    
    respawn
    respawn limit 8 60
    
    exec sudo -u user <path_to_web2py>/web2py.py -K <your_app>
    
  2. in /etc/init.d exec:

    ln -s /lib/init/upstart-job web2py-scheduler

  3. (optional, only if you want manual startup) in /etc/init directory create the web2py-scheduler.override file:

    manual
    
1

Please see Web2Py Book which worked for me running Ubuntu 14:

Start the scheduler as a Linux service (upstart)

To install the scheduler as a permanent daemon on Linux (w/ Upstart), put the following into /etc/init/web2py-scheduler.conf, assuming your web2py instance is installed in user's home directory, running as user, with app myapp, on network interface eth0.

description "web2py task scheduler"
start on (local-filesystems and net-device-up IFACE=eth0)
stop on shutdown
respawn limit 8 60 # Give up if restart occurs 8 times in 60 seconds.
exec sudo -u <user> python /home/<user>/web2py/web2py.py -K <myapp>
respawn

You can then start/stop/restart/check status of the daemon with:

sudo start web2py-scheduler
sudo stop web2py-scheduler
sudo restart web2py-scheduler
sudo status web2py-scheduler
Ben Law
  • 58
  • 6