相关疑难解决方法(0)

从现有模板创建MTurk HIT

我正在使用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)
Run Code Online (Sandbox Code Playgroud)

错误是:

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>
Run Code Online (Sandbox Code Playgroud)

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

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

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

UPDATE

我尝试使用评论中提到的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)
Run Code Online (Sandbox Code Playgroud)

这会从suds产生错误信息:

TypeNotFound: Type not found: 'HITLayoutId'
Run Code Online (Sandbox Code Playgroud)

我再次按照这里的说明操作:http://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_CreateHITOperation.html这看起来相当简单.

解决方案 …

mechanicalturk boto amazon-web-services python-2.7

6
推荐指数
0
解决办法
1372
查看次数

使用boto和python通过参数从Layout创建mTurk HIT

我试图利用boto在机械土耳其人中生成HIT.目标是使用已在我的mTurk帐户上生成的公共布局,并将其图像URL传递给迭代创建HIT.

问题是,即使正确命名参数,如果图像url boto不成功.我创建命中的示例代码是:

from boto.mturk.connection import MTurkConnection
from boto.s3.connection import S3Connection
from boto.mturk.layoutparam import LayoutParameter
from boto.s3.key import Key
import datetime

mtc = MTurkConnection(aws_access_key_id=AWSKEY,
                  aws_secret_access_key=AWSSKEY,
                  host=HOST)

#Define the layout ID to use and url to the image being used (bucket and serial defined in another place
LAYOUTID = '30W9SLHWRYCURO27D44916CUTGKDS2'
S3URL = LayoutParameter('image_url','https://s3.amazonaws.com/'+BUCKET_NAME+'/'+SERIAL)
REWARD = 0.05

#Call create_hit to generate the HIT
hit_result = mtc.create_hit(hit_layout=LAYOUTID,layout_params=S3URL,  keywords=keywords_list, reward=REWARD,
                            duration=datetime.timedelta(7),max_assignments=1)
Run Code Online (Sandbox Code Playgroud)

这会生成错误 您的请求缺少必需参数.必需参数包括HITLayoutParameter.您尚未提供所有必需的HITLayout参数.缺少参数名称:image_url

并且为了确保,我的布局ID具有正确的参数名称,当我检查mTurk时我看到(无法发布screengrab):

布局ID:30W9SLHWRYCURO27D44916CUTGKDS2参数:image_url

使用LayoutParameter有什么技巧吗?或者我是以错误的方式使用create_hit?

python mechanicalturk boto python-2.7

5
推荐指数
1
解决办法
778
查看次数