48 votes

Les ressources et les clients de Boto3 sont-ils équivalents? Quand utiliser l'un ou l'autre?

Boto3 Mavens,

Quelle est la différence fonctionnelle, le cas échéant, entre clients et ressources?

Sont-ils fonctionnellement équivalents?

Dans quelles conditions choisiriez-vous d'invoquer une ressource Boto3 contre un client (et inversement)?

Bien que je me suis efforcé de répondre à cette question par RTM ... regrette, comprendre la différence fonctionnelle entre les deux m'échappe.

Tes pensées?

Merci beaucoup !

Avion Wryter

23voto

Jordon Phillips Points 5173

Les ressources ne sont qu'une abstraction basée sur les ressources sur les clients. Ils ne peuvent rien faire que les clients ne puissent pas faire, mais dans de nombreux cas, ils sont plus agréables à utiliser. Ils ont en fait un client intégré qu'ils utilisent pour faire des demandes. L'inconvénient est qu'ils ne supportent pas toujours 100% des fonctionnalités d'un service.

2voto

hlidka Points 509

Toujours créer un resource . Il contient les méthodes importantes dont vous aurez besoin, telles que Table . Si vous avez besoin d'un objet client , il est prêt à être utilisé. Demandez simplement .meta.client :

 import boto3
dynamodb = boto3.resource(service_name='dynamodb', endpoint_url='http://localhost:8000')
try:
    dynamodb.create_table(...)
except dynamodb.meta.client.exceptions.ResourceInUseException:
    logging.warn('Table already exists')
table = dynamodb.Table(table_name)
response = table.get_item(...)
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X