mturk-crowd-beta-client

A client for the MTurk Crowd REST API


Keywords
mturk-crowd-beta-client
License
Apache-2.0
Install
pip install mturk-crowd-beta-client==1.0.0

Documentation

Prerequisites

To use this library, you'll need first follow our account set-up instructions to set up your Mechanical Turk and AWS accounts to call the API.

Instantiating the client requires using a Session object from boto3 to authenticate. The boto3 docs describe how to manage your credentials in more detail.

Quick Start

First, install the library:

$ pip install mturk-crowd-beta-client

Then, from a Python interpreter or script, create your first task:

from mturk_crowd_beta_client import MTurkCrowdClient
from boto3.session import Session
import uuid

# This examples assume you have a local AWS profile called
# 'mturk-crowd-caller', but you can authenticate however you like,
# including by directly passing in your access key and secret key.
session = Session(profile_name='mturk-crowd-caller')

# Create the client
crowd_client = MTurkCrowdClient(session)

# For this example, we'll give our task a random, unique name. For real
# work, you'll probably want to pick a name based on your input source.
task_name = 'my-test-task-' + uuid.uuid4().hex
function_name = 'sentiment-analysis-test'

# Create the task
put_result = crowd_client.put_task(function_name,
                                   task_name,
                                   {'text': 'Everything is wonderful.'})
print('PUT response: {}'.format(
    {'status_code': put_result.status_code, 'task': put_result.json()}))
# => PUT response: {
#  'status_code': 201,
#  'task': {'input': {'text': 'Everything is wonderful.'},
#           'problemDetails': None,
#           'result': None,
#           'state': 'processing',
#           'taskName': 'my-test-task-73fbfb29f2bc451d9696d11103dcaf0e'}
#   }

# Get the task we just created. Note that for a production (i.e., non-test)
# task, we'd have to poll periodically until the task completed.
get_result = crowd_client.get_task(function_name, task_name)
print('GET response: {}'.format(
    {'status_code': get_result.status_code, 'task': get_result.json()}))
# => GET response: {
#  'status_code': 200,
#  'task': {'input': {'text': 'Everything is wonderful.'},
#           'problemDetails': None,
#           'result': {'sentiment': 'positive'}
#           'state': 'completed',
#           'taskName': 'my-test-task-73fbfb29f2bc451d9696d11103dcaf0e'}
#   }

Further Reading

Check out our usage instructions and API documentation for more details about how to use the API and this client.