我的工作目录中有一个简单的bash脚本switch.sh
,我需要在我的烧瓶应用中每n分钟运行一次。
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()
如果我从我的工作目录开始我的程序,aws-switch-role
的位置如下:python app.py
一切正常。
但是,如果我从python server/app.py
这样的另一个目录运行它
/bin/sh: ./switch-role.sh: No such file or directory
我该如何解决?
我想在我的应用开始之前运行该脚本。
如何删除第一个电话run_aws_script()
并将其移至scheduler
?
答案 0 :(得分:0)
如果您仔细阅读python文档,那么您可以找到使用" shell = True"的信息。不安全。您可以使用subprocess.check_output命令,而不是调用。
cwd = <path_to_switch_role.sh>
subprocess.check_output([cwd],stderr=subprocess.STDOUT)
在这种情况下,没有mater从哪个目录运行那些python。 关于每n分钟运行一次,你可以使用python sleep命令。