2017-10-19 16 views
0

Voici mon code Python en ce moment:Comment envoyer un message SQS de manière asynchrone en python?

sqs = boto3.resource('sqs') 
queue = sqs.get_queue_by_name(Queue='test') 
msg = 'hello world' 
for i in range(0,1000): 
    queue.send_message(MessageBody = msg) 
    print("Message Sent") 

Et voici la version Node.js:

var sqs = new AWS.SQS({apiVersion: '2012-11-05'}); 
var params = { 
    MessageBody: 'hello world', 
    QueueUrl: // Queue URL here 
}; 
for(var i = 0; i < 1000; i++){ 
    sqs.sendMessage(params, function(err,data){ 
     if(err){ 
      throw err; 
     } else { 
      console.log("Message Sent"); 
     } 
    }) 
} 

Mon problème est que cela prend beaucoup plus de temps pour envoyer 1000 messages en utilisant le script Python car il s'exécute de manière synchrone par rapport à Node.js en le faisant de manière asynchrone. J'ai regardé partout et je n'arrive pas à trouver un moyen d'envoyer des messages de manière asynchrone en Python. Un aperçu serait grandement apprécié.

Répondre

0

La bibliothèque boto3 ne prend pas en charge les appels asynchrones. Il y a une bibliothèque qui supporte S3 avec quelques tests sur SQS appelé aiobotocore. Ces liens ont plus d'informations:

aiobotocore

Support asyncio

+0

Merci. Je vais regarder dans ceux-ci. – Matt