Il y a quelques choses qui pourraient être vissant cela pour vous. La première, qui est mineure, est que le client que vous utilisez s'appelle s3. Cela peut être simplement un nom de variable que vous avez choisi pour MTurk, mais il vaut la peine de vous assurer que vous n'essayez pas de l'appeler par rapport au client AWS S3. La seconde est que vous référencez next_token (la variable) lors de votre premier appel dans la boucle While. Le problème est qu'il ne sera pas initialisé votre première fois, donc est voué à l'échec. Encore une fois, cela pourrait être une relique du bref extrait de code que vous avez montré et pas vraiment le problème.
Mais de toute façon, le code suivant devrait fonctionner. Notez que vous pouvez configurer la taille de la page à retourner (jusqu'à 100, je crois). Mais l'important est qu'il ne passe jamais dans un NextToken non initialisé et qu'il configure correctement le client MTurk. Ce code fonctionne sur ma fin. Faites-moi savoir si vous rencontrez des problèmes avec cela. Heureux d'aider plus loin.
import boto3
region_name = 'us-east-1'
aws_access_key_id = 'YOUR_ACCESS_KEY'
aws_secret_access_key = 'YOUR_SECRET_KEY'
PAGE_SIZE = 20
endpoint_url = 'https://mturk-requester-sandbox.us-east-1.amazonaws.com'
client = boto3.client('mturk',
endpoint_url = endpoint_url,
region_name = region_name,
aws_access_key_id = aws_access_key_id,
aws_secret_access_key = aws_secret_access_key,
)
qualification_id='9W4ZQKNWM3FZ5HGM2070'
response = client.list_workers_with_qualification_type(
QualificationTypeId=qualification_id,
Status='Granted',
MaxResults=PAGE_SIZE
)
next_token = response['NextToken']
qualification_count = response['NumResults']
while (response['NumResults'] == PAGE_SIZE):
print "Using next token of {}".format(next_token)
response = client.list_workers_with_qualification_type(
QualificationTypeId=qualification_id,
Status='Granted',
MaxResults=PAGE_SIZE,
NextToken=next_token
)
next_token = response['NextToken']
qualification_count += response['NumResults']
print "There are {} Workers in Qualification {}".format(qualification_count, qualification_id)
J'ai vérifié les documents mais il n'explique pas la partie: http://boto3.readthedocs.io/en/latest/reference/services/mturk.html#MTurk.Client.list_workers_with_qualification_type – Niko