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

moto_server s3 slows down as tests progress

我有一个包含约 1000 个测试的测试套件。以前我们使用的是 mock_s3 装饰器,它之所以起作用,是因为我们的 "integration tests" 只是从其他服务导入模块并模拟它们的功能。这一直是不受欢迎的,但直到最近才成为优先解决的问题。

我正在尝试在独立服务器模式下使用 moto,在 conftest.py 中使用

hackily 启动服务
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"

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

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

moto 开发人员在此处提供的缓慢答案:https://github.com/spulec/moto/issues/2288