如何用mturk迭代boto3中的结果

时间:2017-05-11 17:42:44

标签: python amazon-web-services boto mechanicalturk

我是boto的新手,我尝试迭代我能得到的结果。

特别是,我想要计算具有特定资格的所有工人。但是,限制为100,我不明白它如何与NextToken一起使用。有人能帮助我吗?

# next_token = 1
qualification_count = 0
while True:
    response = s3.list_workers_with_qualification_type(
        QualificationTypeId=qualification_id,
        Status='Granted',
        MaxResults=100,
        NextToken=next_token
    )
    next_token = response['NextToken']
    qualification_count += response['NumResults']

显然next_token不正确,但我不知道应该是什么

1 个答案:

答案 0 :(得分:2)

有一些事情可能会让你搞砸了。第一个是次要的,即您使用的客户端名为s3。这可能只是您为MTurk选择的变量名称,但值得确保您不会尝试针对AWS S3客户端调用此名称。

第二个是您在第一次调用While循环时引用next_token(变量)。问题是它第一次没有被初始化,因此注定要失败。同样,这可能只是您已经展示的简短代码段的遗留物,而不是实际上的问题。

但无论哪种方式,以下代码都应该有效。请注意,您可以配置要返回的页面大小(我相信最多100个)。但重要的是,它永远不会传递给未初始化的NextToken,而且它正确地设置了MTurk客户端。这段代码适用于我。如果您遇到任何问题,请告诉我。很高兴进一步帮助。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="stv.wordspower.ProgressFragment"
android:orientation="vertical">

<!-- TODO: Update blank fragment layout -->

<TextView
    android:id="@+id/txt_progresses"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/txt_progresses"
    android:textAlignment="center"
    android:textColor="@android:color/background_dark"
    android:textSize="30dp"
    android:textStyle="bold" />

<TextView
    android:id="@+id/txt_save"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/txt_empty"
    android:textAlignment="center"
    android:textSize="30dp"
    android:onClick="onClick"
    android:clickable="true"/>