代码之家  ›  专栏  ›  技术社区  ›  Timmy

使用activate[duplicate]从crontab调用python脚本

  •  6
  • Timmy  · 技术社区  · 16 年前

    2 回复  |  直到 16 年前
        1
  •  17
  •   dangel    7 年前

    Virtualenv的激活脚本非常简单。它主要设置到virtualenv的Python解释器的路径;它所做的其他事情(设置 PS1

    1.设置Python脚本以使用virtualenv的Python解释器

    ~/virtualenv/bin/python ,您可以将该路径放在Python脚本的顶部:

    #!/home/user/virtualenv/bin/python
    

    然后像往常一样从crontab启动脚本。

    2.在cronjob中使用适当的Python解释器启动脚本

    假设你的剧本在 ~/bin/cronjob 你的virtualenv的Python解释器在 ~/virtualenv/python ,您可以将其放入crontab:

    * * * * * /home/user/virtualenv/python /home/user/bin/cronjob
    
        2
  •  1
  •   Josir    13 年前

    克朗塔布

    1) 创建shell脚本:例如/var/webapp/cron.sh

    #!/bin/sh
    PATH="/var/webapp/.env/bin:$PATH"
    export PATH
    cd /var/webapp/
    python test.py
    

    /var/webapp/.env/bin文件 是virtualenv位置。设置路径时,无需运行source../activate

    #!/usr/bin/env python
    
    import os
    from datetime import datetime
    
    os.environ['DJANGO_SETTINGS_MODULE'] = 'settings.production'
    os.environ['DJANGO_CONF'] = 'settings.production'
    
    from util.models import Schedule
    
    dset = Schedule.objects.all()
    for rec in dset:
        print rec
    
    print 'cron executed %s' % datetime.today()
    

    在本例中,django设置位于settings/production.py上

    3) 最后,编辑/etc/crontab。例如,每天每半小时执行一次:

    1,31 * * * *  root   /var/webapp/cron.sh >> /var/webapp/cron.log
    

    请注意,生成日志以帮助查找错误或调试消息非常重要。