あなたのためにこれを台無しにするかもしれないいくつかのものがありますがどうあるべきか分かりません。最初の部分は、使用しているクライアントの名前がs3であるということです。これは、あなたがMTurkのために選択した変数の名前かもしれませんが、AWS S3クライアントに対してこれを呼び出さないようにする価値があります。
二つ目は、あなたがWhileループにあなたの最初の呼び出しで(変数)をnext_token参照していることです。問題は、最初に初期化されず、失敗することになるということです。繰り返しますが、これはあなたが示した簡単なコードスニペットの遺物であり、実際には問題ではありません。
いずれにしても、次のコードが有効です。返すページのサイズを設定することができます(最大100、私は信じています)。しかし重要な点は、初期化されていないNextTokenで決して通過しないことと、MTurkクライアントを正しく設定することです。このコードは私の最後で動作します。あなたがそれに問題を抱えたら教えてください。さらに喜んで助けてください。
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)
出典
2017-05-14 18:20:37
jrb
私は、ドキュメントをチェックしますが、一部については説明しません:http://boto3.readthedocs.io/en/latest/reference/services/mturk.html#MTurk.Client.list_workers_with_qualification_typeを – Niko