【问题标题】:How to schedule daily, monthly, weekly cron jobs using python cron-tab?如何使用 python cron-tab 安排每日、每月、每周的 cron 作业?
【发布时间】:2019-06-08 07:31:02
【问题描述】:

我需要使用 python 每天、每周、每月运行一个 cron 作业。我做了很多研究并决定使用 crontab。这是我的配置:

"schedule" :  {
  "name": "xyz",
  "at": "12:00:00 AM",
  "every": "1d"
  } 

这里,every 可以取 1d、1w、1m 的值来表示每日、每周、每月。它也可以取值为 2d、2w、2m 等。我已经确定了每日和每月的代码。我坚持每周一次。有人可以帮忙吗?

my_cron = CronTab(user=self.user)
        for job in my_cron :
            if job.comment == self.name:
                my_cron .remove(job)
                my_cron .write()
        job = my_cron .new(
            command='sh start.sh "invoke-adapter"',
            comment=self.name)        
        job.setall(str_job_schedule)
        vmware_cron.write()

For monthly, str_job_schedule = "30 03 * */1 *" (runs every month)
For daily, str_job_schedule = "30 03 * * */1" (runs every day)
For weekly, str_job_schedule = "30 03 ? * *" 

【问题讨论】:

标签: python python-2.7 cron


【解决方案1】:

我会指定我想要哪一天:

每月,每个月的第一天

str_job_schedule = "30 03 1 * *"

每天,每天午夜

str_job_schedule = "30 03 * * *"

每周、每周日

str_job_schedule = "30 03 * * 0"

此 WP 页面解释格式:https://en.wikipedia.org/wiki/Cron

【讨论】:

  • 谢谢。让我试试这个。如何指定每隔一天或 3 天运行一次?
  • 没有完美的方法。见serverfault.com/questions/204265/…。第三列中的 */2 每隔奇数天运行一次,但它将在 31 日和 1 日运行。 AFAIK,crontab 不允许隔天。您可以按照serverfault.com/a/204280/292268 中的建议在脚本中添加逻辑。
【解决方案2】:

我做了非常相似的事情,基本上创建了一种调度程序。我会大致告诉你这个想法

import threading
from crontab import CronTab
import time
schedules = {'Jobs': {'clean house': '* * * * *'}, {'cook': '*/5 * * * *'}} # some kind of config of your jobs

while True:
    time.sleep(11)
    for job in schedules['Jobs']:
        entry = CronTab(schedules['Jobs'][job])
        if entry.next() < 9:
            # if the job is going to happen in less than 10s
            # run thread which will execute after time.sleep(entry.next())
            threading.Thread(target = execute,args=(job,)).start()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-30
    • 2012-04-26
    • 2019-06-06
    • 2012-01-11
    • 2021-03-12
    相关资源
    最近更新 更多