amazon-sqs-python-extended-client-lib icon indicating copy to clipboard operation
amazon-sqs-python-extended-client-lib copied to clipboard

Naming the extended client

Open damebrown opened this issue 9 months ago • 0 comments

Since I use your library in high load, in order to not create a client in every call, I wrote the following code:

import sqs_extended_client

_sqs_extended_client = None

def get_sqs_extended_client():
    global _sqs_extended_client
    if not _sqs_extended_client:
        _sqs_extended_client = client(service_name='sqs', region_name=os.getenv(AWS_REGION, US_EAST_1))
        ~other _sqs_extended_client attribute initialization~
    return _sqs_extended_client


def send_message(args) -> None:
        get_sqs_extended_client().send_message(args)

As you can see it initializes the client only if it's None. Since the name sqs_extended_client is imported, this can be done only by giving the client a different name. I saw that in all of your documentation you're using only the name sqs_extended_client in order to access the extended client. I wanted to make sure this method is valid and that the session of _sqs_extended_client will be overridden by your library and create an extended client instead of a regular one.

In addition, since my IDE doesn't recognize _sqs_extended_client, it doesn't auto-complete any of the client's methods or variables I can call or override. I'd like to make sure that I can override the client's s3_client field in the following way: _sqs_extended_client.s3_client = client(service_name='s3', region_name=aws_region) and that I don't need to call any of the getters/setters defined in the library's client.py file. Thanks!

damebrown avatar Jan 26 '25 12:01 damebrown