小编Aak*_*ash的帖子

在boto3中诊断内存泄漏

我有一个在Elastic Beanstalk上运行的芹菜工作者,它轮询SQS队列,获取消息(包含S3文件名),从S3下载这些文件并处理它们.我的工作人员计划每15秒运行一次,但由于某种原因,内存使用量会随着时间的推移而不断增加.

这是我用来访问SQS的代码

def get_messages_from_sqs(queue_url, queue_region="us-west-2", number_of_messages=1):
    client = boto3.client('sqs', region_name=queue_region)
    sqs_response = client.receive_message(QueueUrl=queue_url, MaxNumberOfMessages=number_of_messages)
    messages = sqs_response.get("Messages", [])
    cleaned_messages = []
    for message in messages:
        body = json.loads(message["Body"])
        data = body["Records"][0]
        data["receipt_handle"] = message["ReceiptHandle"]
        cleaned_messages.append(data)
    return cleaned_messages

def download_file_from_s3(bucket_name, filename):
    s3_client = boto3.client('s3')
    s3_client.download_file(bucket_name, filename, '/tmp/{}'.format(filename))
Run Code Online (Sandbox Code Playgroud)

完成这个过程后,我们是否需要在boto3中关闭客户端连接?如果是这样,我们怎么做呢? 内存监控图

python memory django celery boto3

5
推荐指数
1
解决办法
729
查看次数

标签 统计

boto3 ×1

celery ×1

django ×1

memory ×1

python ×1