在生产环境中运行web2py调度程序

4

我知道可以通过使用以下方式手动运行调度程序:

python web2py.py -K myapp

但这应该在生产环境中的哪里指定呢?我正在使用Ubuntu上的Apache标准web2py部署脚本。


为了生产,您必须使用mod_wsgi。这将与apache一起工作。 - Nilesh
3个回答

8

为了完整地描述情况,如果在2015年之后使用Debian或其他Linux发行版,则应使用systemd。对于systemd,需要执行以下步骤: 创建文件/etc/systemd/system/web2py-sched.service 其中包含以下内容:

[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

然后调用安装服务:

sudo systemctl enable /etc/systemd/system/web2py-sched.service 

2
要启动服务,您可以调用systemctl:systemctl start /etc/systemd/system/web2py-sched - Stuart Rolinson
2
或者 sudo service web2py-sched start - Sherlock70

3

在Ubuntu 12.04版本中,我需要手动完成以下步骤:

  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
    

重生次数为什么是8 60?sudo真的必要吗? - Euphorbium
重生限制对我来说是一个不错的选择,一分钟内超过8次意味着存在某些问题,调度程序启动有点慢。 - Paolo Betti
sudo对于安全原因非常重要。因此,web2py调度程序将作为非特权用户运行。 - Paolo Betti

1
请查看适用于在Ubuntu 14上运行的Web2Py书籍Web2Py Book

将调度程序作为Linux服务(upstart)启动

如果您希望在Linux上将调度程序安装为永久守护进程(使用Upstart),请将以下内容放入/etc/init/web2py-scheduler.conf,假设您的web2py实例已安装在用户主目录中,以user身份运行,使用应用程序myapp,在网络接口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

您可以使用以下命令启动/停止/重启/检查守护进程的状态:
sudo start web2py-scheduler
sudo stop web2py-scheduler
sudo restart web2py-scheduler
sudo status web2py-scheduler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接