如何用boto3更新MTurk工人资格得分?
问题描述:
旧的MTurk API(和boto2
)有一个UpdateQualificationScore
方法,允许用户更新特定工作人员的分数,但这似乎已在基于boto3
的最新版本中消失。如何用boto3更新MTurk工人资格得分?
最新的MTurk API有一个GetQualificationScore
方法(实际上它返回一个完整的工人资格记录,而不仅仅是分数),但没有相应的UpdateQualificationScore
方法。更新现有员工的分数的机制是什么?
答
是最好的,我可以告诉大家,与boto3
做到这一点的正确方法是使用AssociateQualificationWithWorker
端点:
session = boto3.Session(profile_name='mturk')
client = session.client('mturk')
response = client.associate_qualification_with_worker(
QualificationTypeId=qualification_type_id,
WorkerId=worker_id,
IntegerValue=score,
SendNotification=False,
)
这似乎工作,特别是当采取旁边GetQualificationScore
中返回的“全“资格记录,而不仅仅是分数。
答
前书呆子的回答是正确的。构建关中可用的Python示例在http://requester.mturk.com/developer,下面的工作分配则QualificationType改变比分为工人:
import boto3
region_name = 'us-east-1'
aws_access_key_id = 'YOUR_ACCESS_ID'
aws_secret_access_key = 'YOUR_SECRET_KEY'
endpoint_url = 'https://mturk-requester-sandbox.us-east-1.amazonaws.com'
# Uncomment this line to use in production
# endpoint_url = 'https://mturk-requester.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,
)
# This will assign the QualificationType
client.associate_qualification_with_worker(QualificationTypeId = '3KIOU9ULHKIIS5OPUVORW7OE1070V0', WorkerId = 'A39ECJ12CY7TE9', IntegerValue = 100)
# This will set the QualificationScore from 100 to 90
client.associate_qualification_with_worker(QualificationTypeId = '3KIOU9ULHKIIS5OPUVORW7OE1070V0', WorkerId = 'A39ECJ12CY7TE9', IntegerValue = 90)
我要补充的是,在实践中,有一个在看到约30-60秒的传播延迟WorkerScore更新www.mturk.com。只是单挑,以便在试图确定您对associate_qualification_with_worker的调用是否工作时不会被此情况抛出。 – jrb