moto_server s3随着测试的进行而变慢

时间:2019-07-09 22:39:09

标签: python python-2.7 amazon-s3 boto3 moto

我有一个约1000个测试的测试套件。以前,我们使用的mock_s3装饰器只能使用,因为我们的“集成测试”只是从其他服务导入模块并模拟了它们的功能。这始终是不可取的,但是直到最近才成为修复的重点。

我试图在独立服务器模式下使用moto,使用

在conftest.py中黑客启动服务
def start_local_moto_server():
    global moto_subprocess
    moto_subprocess = subprocess.Popen(
        ['moto_server', 's3'],
        stdout=subprocess.PIPE, stderr=subprocess.PIPE,
        bufsize=0, universal_newlines=True,
    )
    print 'Waiting for moto local service to start...'
    while True:
        moto_log = moto_subprocess.stderr.readline()
        print moto_log
        if 'Running' in moto_log:
            break

    boto3.resource(
        's3', region_name='us-east-1', endpoint_url='http://127.0.0.1:5000'
    ).create_bucket(Bucket=TEST_S3_BUCKET_NAME)

随着测试的进行,对s3客户端的所有调用变得越来越慢,直到最后我得到

ReadTimeoutError: Read timeout on endpoint URL: "http://localbox:5000/my-bucket/my/key/file.tar"

单独运行这些测试会导致所有这些测试通过。

我真的不知道从哪里开始调试此问题或不了解问题,或者如何提供更多信息。有人可以帮忙找出问题所在吗?

1 个答案:

答案 0 :(得分:0)

此处的moto开发者提供的慢速答案:https://github.com/spulec/moto/issues/2288