6

我正在使用 Python AWS 包 boto v2.7 与 Mturk API 交互以创建和管理 HIT 等。

尝试使用现有模板创建 HIT 时遇到困难。亚马逊关于该主题的文档在这里:http ://docs.aws.amazon.com/AWSMechTurk/2012-03-25/AWSMturkAPI/ApiReference_CreateHITOperation.html

我的代码是:

from boto.mturk.connection import MTurkConnection

mtc = MTurkConnection(aws_access_key_id=ACCESS_ID,
                             aws_secret_access_key=SECRET_KEY,
                             host=HOST)

mtc.create_hit(hit_layout=HIT_LAYOUT_ID)

错误是:

MTurkRequestError: MTurkRequestError: 200 OK
<?xml version="1.0"?>
<CreateHITResponse><OperationRequest><RequestId>986926dd-0263-4aca-970c-139b7ed4a0e8</RequestId></OperationRequest><HIT><Request><IsValid>False</IsValid><Errors><Error><Code>AWS.MechanicalTurk.InvalidParameterValue</Code><Message>There was an error parsing the request (1359492767224 s)</Message></Error></Errors></Request></HIT></CreateHITResponse>

似乎 MTurk API 需要一个命中布局参数,如下所示:http: //docs.aws.amazon.com/AWSMechTurk/2012-03-25/AWSMturkAPI/ApiReference_HITLayoutArticle.html

虽然我的原始模板确实使用了占位符值,但为了简单起见,我删除了它们并试图让代码正常工作。在这种情况下,我认为唯一需要的参数是 hit_layout?

这是对boto api的限制还是我在这里遗漏了什么?

更新

我尝试使用评论中提到的 mturkcore 模块,结果如下。

代码:

import mturkcore

login_dict = {'use_sandbox':True,
              'stdout_log':False,
              'AWS_ACCESS_KEY_ID':'ACCESS_ID',
              'AWS_SECRET_ACCESS_KEY':'PASSWORD'}

mtc = mturkcore.MechanicalTurk(login_dict)

request_params = {"Title":"Test Layout",
                    "Description":"Test Description",
                    "HITLayoutId":"2QNNJKM05BMJLZIA6G7TS9RA7TECHE",
                    "Reward":0.05,
                    "LifetimeInSeconds":6000,
                    "AssignmentDurationInSeconds":600    
                    }

mtc.create_request("CreateHIT", request_params)

这会产生来自 suds 的错误消息:

TypeNotFound: Type not found: 'HITLayoutId'

同样,我遵循这里的说明:http: //docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_CreateHITOperation.html这似乎相当简单。

解决方案 我终于能够从现有模板创建 HIT,但仅限于生产环境。显然沙盒和生产之间存在差异,这可能就是我收到上述错误的原因。如果有人在沙盒中成功完成此操作,请加入!

此外,您必须确保 Reward、LifetimeInSeconds 和 AssignmentDurationInSeconds 参数与您正在创建的布局模板相匹配。最后,要查看您创建的 HIT,您必须单击“单独管理 HIT”链接。

4

0 回答 0