在Python中rwing一个Windows文件,这样每天最多运行一个测试实例

2024-06-17 12:38:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我用Python编写了一个自定义测试工具(由于有很多自定义逻辑,现有的东西并不适合)。Windows任务调度器每天每小时启动一次。由于我的测试现在需要两个多小时才能运行,而且还在增长,我遇到了一些问题。现在我只检查系统时间,不执行任何操作,除非hour % 3 == 0,但我不喜欢这样。我有一个文本文件,其中包含:

# This is a comment
LatestTestedBuild = 25100

# Blank lines are skipped too
LatestTestRunStartedDate = 2011_03_26_00:01:21

# This indicates that it has not finished yet.
LatestTestRunFinishDate = 

有时,当我手动启动测试时,它可以在任何时间发生,包括12:59:59.99 我想尽量消除比赛条件。我宁愿付出额外的努力一次,而不担心实际发生的可能性。所以,我认为以原子方式锁定这个文本文件是最好的方法。在

我正在使用Python 2.7Windows Server 2008R2 Pro和{}。我不喜欢安装额外的库(Python还没有“卖给”我的同事,但是我可以在本地复制一个实现所有库的文件,前提是许可证允许这样做)。在

所以,请建议一个好的,防弹的方法来解决这个问题。在


Tags: 方法iswindows系统时间comment测试工具逻辑
1条回答
网友
1楼 · 发布于 2024-06-17 12:38:16

{当你运行一个名为cd1>的测试文件时。完成后删除它,使用try…finally块确保它总是被清除。如果文件存在,请不要运行测试。如果计算机崩溃或类似情况,请手动删除该文件。我怀疑你需要更多的聪明。在

你确定你需要两个小时的测试吗?!我认为2分钟是一个比较合理的时间,虽然我想如果你运行一些复杂的数字你可能需要更多。在

示例代码:

import os
if os.path.exists("__LOCK__"):
    raise RuntimeError("Already running.") # or whatever
try:
    open("__LOCK__", "w").write("Put some info here if you want.")
finally:
    if os.path.exists("__LOCK__"):
        os.unlink("__LOCK__")

相关问题 更多 >