结构为每个TA分配唯一索引

2024-04-20 01:38:42 发布

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

我用fabric来运行一些测试,每台机器上的每个测试。我想给每个运行调用传递一个唯一的索引。 当不允许复制主机时,我会执行以下操作:

@task
@parallel
def run_test():
    idx = env.hosts.index(env.host)
    run('run_test %d' % (idx)

这个很好用。但是,现在我想在每台机器上运行几个测试。我通过多次传递相同的主机名,然后设置环境重复数据消除主机=False,但是,这打破了上述模式,因为现在每个调用都将获得相同的索引。你知道吗

有什么办法吗。我尝试使用多进程锁来分配索引,但没有成功。你知道吗

干杯。你知道吗


Tags: runtestenv机器hosttaskindex环境
1条回答
网友
1楼 · 发布于 2024-04-20 01:38:42

[回答我自己的问题] 事实证明,使用多进程是解决这个问题的正确方法。您只需要使用Lock和Value,例如:

def get_unique_index():
    env.DUP_LOCKER.acquire()
    result = env.UNIQUE_ID.value
    env.UNIQUE_ID.value = result + 1
    env.DUP_LOCKER.release()
    return result

需要初始化的位置:

env.UNIQUE_ID.value = 0
env.DUP_LOCKER = Lock()

相关问题 更多 >