安排 Python 函数的执行

Schedule the execution of a Python function

我正在构建一个网络应用程序,我有一个日历,用户可以在其中选择未来的一天和一个小时并安排任务。计划任务是 python 中的一个简单函数,将在用户选择的确切日期和时间调用。

我遇到了 schedule 包,但我很快明白它不适合我的目标,因为他们明确表示如果你需要工作持久性和本地化,我不应该使用它,我肯定需要。

由于我的需要,我想我需要使用某种 OS cron,例如 Linux 上的 crontab。问题是我不需要让我的函数在每个给定的时间间隔执行,而只在用户选择的给定时间执行。

除了crontab还有其他解决方案吗?我看过 python-crontab 包,但它似乎能够执行命令,但不能直接在 Python 文件上真正起作用。

有什么想法吗?

PS 我正在使用 Django,我已经看到了 django-crontab 包,但它对我来说似乎太静态了,因为我需要动态 cron 作业才能 add/remove

所以,最后,我的解决方案是使用 python-crontab,如下所示:

python_exec_command = 'python ' + __file__ + ' ' + playlist_id + ' ' + username
    python_folder = str(Path(__file__).resolve().parent.parent) + '/venv/bin/'
    command = 'source ' + python_folder + 'activate && ' + python_exec_command + ' && deactivate'
    cron = CronTab(user='nicola')
    job = cron.new(command=command, comment=playlist_id)
    job.minute.on(minute)
    job.hour.on(hour)
    job.month.on(month)
    job.day.on(day)
    cron.write()

这将启动以下脚本

def main(playlist_id, username):
    # run the actual update
    cron = CronTab(user='nicola')
    cron.remove_all(command=playlist_id)
    cron.write()
    pass


if __name__ == "__main__":
    playlist_id = sys.argv[1]
    username = sys.argv[2]
    main(playlist_id, username)

所以通过这种方式,我可以使用参数并在执行检查唯一 ID 作为评论后删除 cron