python - 防止管理命令一次运行多个命令

标签 python django command

我正在设计一个长时间运行的流程,由 Django 管理命令触发,需要相当频繁地运行。该进程应该通过 cron 作业每 5 分钟运行一次,但我想阻止它在第一个运行时间超过 5 分钟的极少数情况下运行该进程的第二个实例。

我考虑过创建一个触摸文件,该文件在管理进程启动时创建,并在进程结束时删除。然后,第二个管理命令进程将检查以确保触摸文件在运行之前不存在。但是,如果进程在没有正确删除触摸文件的情况下突然终止,这似乎是一个问题。看来必须有更好的方法来进行检查。

有人知道有什么好的工具或模式可以帮助解决此类问题吗?

最佳答案

出于这个原因,我更喜欢有一个长时间运行的进程,可以从共享队列中获取其工作。我所说的长期运行是指它的生命周期比单个工作单元更长。然后该进程由一些守护进程服务控制,例如 supervisord它可以在进程崩溃时接管重新启动进程的控制。这会将工作适本地委托(delegate)给知道如何管理进程生命周期的东西,并使您不必担心脚本范围内 posix 进程的细节。

如果您有一个队列,那么您还可以启动多个进程,每个进程都可以从队列中取出作业并处理它们,但这听起来似乎超出了您的问题范围。

关于python - 防止管理命令一次运行多个命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8718642/

相关文章:

python - django-crispy-forms 在同一行上有字段和按钮

python - Pandas groupby 到 to_csv

python - 在使用 Apache 提供静态文件时添加自定义 header

python - Bokeh - 从 CustomJS 中访问轴标签会触发错误,但可以在 Python 代码中使用

if-statement - 批处理 - 用户输入到命令提示符(IF 语句问题)

php - 使用 php 将特定的 pdf 页面与 linux 命令合并

java - 通过 Java 运行 Hadoop jar 命令

python - 在 python 中设置默认日志记录级别

python - “RawQuerySet”对象没有属性 'key'

python - Django:按交集结果过滤查询集