如何每n分钟从烧瓶执行外壳脚本



我在工作dir中有一个简单的bash脚本 switch.sh,我需要在烧瓶应用中每分钟运行每分钟。

from apscheduler.schedulers.background import BackgroundScheduler
from apscheduler.triggers.interval import IntervalTrigger
from subprocess import call
def run_aws_script():
    call(". ./switch-role.sh", shell=True)
if __name__ == '__main__':
    run_aws_script()
    scheduler = BackgroundScheduler()
    scheduler.start()
    scheduler.add_job(func=run_aws_script,
        trigger=IntervalTrigger(minutes=25),
        id='Switching role',
        name='Switch role every 25 minutes',
        replace_existing=True)
    app.run()

如果我从工作dir启动程序,则 aws-switch-role位于以下位置: python app.py一切正常。

但是,如果我从另一个dir(例如python server/app.py)运行它,我有 /bin/sh: ./switch-role.sh: No such file or directory

我该如何解决?

我想在我的应用程序启动之前运行该脚本。如何删除第一个调用run_aws_script()并将其移至scheduler

如果您仔细阅读了Python文档,则可以找到使用" shell = true"的信息。您可以使用subprocess.check_output命令,而不是呼叫。

cwd = <path_to_switch_role.sh>
subprocess.check_output([cwd],stderr=subprocess.STDOUT)

在这种情况下,您没有从哪个目录中运行这些python。大约每n分钟运行一次,您可以使用python睡眠命令。

最新更新