无法使用boto2为Mechanical Turkers分配资格

问题描述 投票:0回答:1

我正在尝试将我创建的资格分配给使用boto2完成我的实验的Turkers。我有三批相同的实验(每个都有不同的HIT ID)。我很容易将资格分配给第一批,使用以下代码:

from boto.mturk.connection import MTurkConnection
mturk = MTurkConnection(aws_access_key_id=ACCESS_ID,
                    aws_secret_access_key=SECRET_KEY,
                    host=HOST)
qualificationID = 'qualificationIDString'
for worker_id in workerIDList:
    #   assign qualification
    print("Granting qualification: %s to worker %s"%(globLoc_qualification, worker_id))
    mturk.assign_qualification(qualification_type_id=qualificationID, 
                                         worker_id=worker_id)

然后我将HIT ID更改为第二批并重新运行相同的代码但是随着时间的推移,我收到错误:

Granting qualification: 3HWVT555HSXFC1HZE98Y23F1CFJAI3 to worker: A1ZTSCPETU3UJW
MTurkRequestError: 200 OK
<?xml version="1.0"?>
<AssignQualificationResponse><OperationRequest><RequestId>ede118ea-9440-4a4d-8f9b-94b816c3a92f</RequestId></OperationRequest><AssignQualificationResult><Request><IsValid>False</IsValid><Errors><Error><Code>AWS.MechanicalTurk.QualificationAlreadyExists</Code><Message>The qualification already exists. (1531770857498)</Message></Error></Errors></Request></AssignQualificationResult></AssignQualificationResponse> A1ZTSCPETU3UJW

有关“资格已存在”的提示是什么?

python-3.x boto mechanicalturk
1个回答
0
投票

错误是说你正试图授予QualificationType的工人已经具有该资格。您可能会看到这一点,因为授予QualificationType是在Worker上发生的事情,而不是HIT。工人可以拥有资格或不具备资格。工人不能多次拥有它。

有关Qualifications和QualificationTypes的更多信息,请查看以下资源:

  1. https://blog.mturk.com/tutorial-understanding-requirements-and-qualifications-99a26069fba2
  2. https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMechanicalTurkRequester/Concepts_QualificationsArticle.html
© www.soinside.com 2019 - 2024. All rights reserved.