我有这个 Django cron 作业脚本(我为此使用了 kronos,这很棒)。
由于我每分钟都会触发此作业,因此我想确保没有另一个脚本实例已经在运行。如果有以前的作业正在运行,那么我想跳过当前的执行。
我知道我可以使用锁定文件来做到这一点,但这不是很可靠,并且当您在执行过程中重新启动时可能会导致问题(您必须清除锁定文件)等。
使用 Python(在本例中为 Django)执行此操作的最佳方法是什么?
编辑:我的目标是 Linux,很抱歉忽略了这个。
这里有一个 Django 应用程序:https ://github.com/jsocol/django-cronjobs
也可以在 pip 上作为cronjobs
.
以防万一你直接去点子;您使用装饰器注册作业,如下所示:
# myapp/cron.py
import cronjobs
@cronjobs.register
def periodic_task():
pass
然后通过以下方式运行命令:
$ ./manage.py cron periodic_task
默认情况下它具有作业锁定,但您可以在应用装饰器时禁用它:
@register(lock=False)