Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用boto时,长时间运行的客户端对象是否安全?_Python_Amazon Web Services_Boto3 - Fatal编程技术网

Python 使用boto时,长时间运行的客户端对象是否安全?

Python 使用boto时,长时间运行的客户端对象是否安全?,python,amazon-web-services,boto3,Python,Amazon Web Services,Boto3,假设我有一个长时间运行的web服务器,可以调用AWSAPI?拥有一个长时间运行的客户机对象是否安全,或者该对象是否可能损坏并弄乱我的web服务器?具体来说,这样做更好吗 import boto3 client = boto3.client('elb') def function(): do stuff with client 还是这个 import boto3 def function(): client = boto3.client('elb') do stuf

假设我有一个长时间运行的web服务器,可以调用AWSAPI?拥有一个长时间运行的客户机对象是否安全,或者该对象是否可能损坏并弄乱我的web服务器?具体来说,这样做更好吗

import boto3

client = boto3.client('elb')

def function():
    do stuff with client
还是这个

import boto3

def function():
    client = boto3.client('elb')
    do stuff with client

前者更好,因为我可以在多个函数中重用相同的客户机对象。如果上述安全问题有效,后一个选项会更好。

我喜欢这样做的方法是将客户端作为参数传递给将使用它的函数。差不多

import boto3

def function(param1, param2, client=None):
    if client is None:
        client = boto3.client('elb') # use default client

    return client.do_stuff(param1, param2)

def function2(param3, param4, client=None):
    if client is None:
        client = boto3.client('elb') # use default client

    return client.do_different_stuff(param3, param4)
然后你可以这样称呼它:

import boto3

client = boto3.client('elb')
stuff = function("a", "b", client=client)
different_stuff = function2("c", "d", client=client)

这是对在函数中实例化它的改进,因为您可以使用一个客户机执行多个操作,但您不必确保客户机存在于所有这些函数的可读范围内,您只需将其作为参数传递。

这样做比将其放入闭包有什么好处?您可以创建一个客户机,并让它使用不同的函数执行多个不同的操作。我对我的答案增加了一点——希望这能解释这一点。