6

Python AWS パッケージ boto v2.7 を使用して Mturk API とやり取りし、HIT などを作成および管理しています。

既存のテンプレートを使用して HIT を作成しようとすると、行き詰まります。このトピックに関する Amazon のドキュメントはこちら: 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