Python使用不同的时间安排不同部分的代码

时间:2016-02-02 20:16:24

标签: python cron

我有一个python脚本,它有两个部分:

  • 它调用api查询的第一部分(我希望每天运行两次)

  • 第二部分,它给出了第一次调用结果的其他函数(我想每分钟运行一次)

我想每天只调用api请求两次,因为结果不会随着时间的推移而变化,我希望代码的第二部分每分钟都运行一次,我怎样才能在python中用cron工作完成这个每分钟运行一次脚本?

1 个答案:

答案 0 :(得分:1)

实际上它可能是一个用不同选项触发的脚本来反映第一部分和第二部分。将数据序列化到临时空间的文件中是两次调用之间数据交换的选择。

我已经为您编写了非正式代码,我没有检查它是否正常工作,只是想知道,您可以做什么:

import requests  # do pip install requests
import sys

headers = {'accept': 'application/json'}

def get_data_from_api():
    response = requests.get(url="http://foobar", headers=headers)
    with open('/tmp/mysaved_data', 'w') as f:
        f.writelines(response.json())

def do_fancy_stuff_with_json():
    with open('/tmp/mysaved_data', 'r') as f:
        data = f.readlines(f)

    # Do the second section stuff

if __name__ == '__main__':
    if len(sys.argv) > 0:  # more than one param -> call the second function
        do_fancy_stuff_with_json()
    else:
        get_data_from_api()

在cron中,您将定义两个作业:

0 5 * * 1 /usr/bin/python myscript.py
/1 * * * * /usr/bin/python myscript.py dummy