Python Crontab 覆盖以前的作业而不是创建一个新作业

Python Crontab Overwrites the previous job instead of creating a new one

在下面粘贴我的 python 代码:

from crontab import CronTab

tab = CronTab()
cmd1 = 'actual command'

cron_job = tab.new(cmd)
cron_job.minute.every(1)

cron_job.enable()
tab.write_to_user(user=True)

我正在根据应用程序上的一些用户输入来设置这些 cronjob。所以加班用户点击提交,我想在同一个 crontab 文件下创建一个新的 cronjob(因为它是一个 webapp,它在标准用户的上下文中运行)。

但似乎每次用户点击提交时,我的 crontab 都会覆盖之前的任务。我在这里遗漏了什么吗?

您在每个请求上重新创建 tab 变量的方式不会附加到有问题的 crontab;它会覆盖它。

如果您将 user=True 传递给 CronTab 构造函数,您将能够附加到现有的 crontab:

from crontab import CronTab

tab = CronTab(user=True)
cmd1 = 'echo Hello'
cmd2 = 'echo CronTab'

job1 = tab.new(cmd1)
job1.minute.every(1)
job1.enable()

job2 = tab.new(cmd2)
job2.hour.every(1)
job2.enable()

print list(tab.commands)  # ['echo Hello', 'echo CronTab']

# Explicitly specify we want the user's crontab:
tab2 = CronTab(user=True)

print list(tab2.commands)  # ['echo Hello', 'echo CronTab']