有什么方法或应急方案来安排Amazon Mechanical Turk HIT?

时间:2019-01-30 12:20:45

标签: amazon mechanicalturk

我需要一个特定的HIT才能在每个星期五早上运行。有什么办法可以做到这一点,或者是否可以通过外部平台(IFTTT,zapier都不起作用)来解决此问题?在我看来,这是一个非常基本的功能。

2 个答案:

答案 0 :(得分:1)

MTurk API中没有内置功能来完成HIT的计划启动。必须通过自定义编程来完成。

如果您正在寻找一站式解决方案,则可以使用标签5(设置点击数和付款)中找到的计划启动时间,通过TurkPrime进行计划

答案 1 :(得分:0)

FWIW,我弄清楚了如何在MTurk中使用Zapier。如果您采用付费计划,则可以利用AWS Lambda应用程序触发一些代码,这些代码将在MTurk上创建HIT。为此,您需要一个链接到您的MTurk账户的AWS账户。一旦有了,就可以创建一个Lambda函数,其中包含以下代码,用于在MTurk上创建HIT:

import json
import boto3

def lambda_handler(event, context):
    print(event)

    ###################################
    # Step 1: Create a client
    ###################################
    endpoint = "https://mturk-requester.us-east-1.amazonaws.com"
    mturk = boto3.client(
    service_name='mturk',
    region_name='us-east-1',
    endpoint_url=endpoint)

    ###################################
    # Step 2: Define the task
    ###################################
    html = '''
        <**********************************
        My task HTML
        ***********************************>
    '''.format(event['<my parameter>'])

    question_xml = '''
    <HTMLQuestion xmlns="http://mechanicalturk.amazonaws.com/AWSMechanicalTurkDataSchemas/2011-11-11/HTMLQuestion.xsd">
    <HTMLContent><![CDATA[{}]]></HTMLContent>
    <FrameHeight>0</FrameHeight>
    </HTMLQuestion>'''.format(html)

    task_attributes = {
    'MaxAssignments': 3,
    'LifetimeInSeconds': 60 * 60 * 5, # Stay active for 5 hours
    'AssignmentDurationInSeconds': 60 * 10, # Workers have 10 minutes to respond
    'Reward': '0.03',
    'Title': '<Task title>',
    'Keywords': '<keywords>',
    'Description': '<Task description>'
    }

    ###################################
    # Step 3: Create the HIT
    ###################################
    response = mturk.create_hit(
    **task_attributes,
    Question=question_xml
    )
    hit_type_id = response['HIT']['HITTypeId']
    print('Created HIT {} in HITType {}'.format(response['HIT']['HITId'], hit_type_id))

请注意,您需要授予Lambda使用MTurk访问权限的角色。从那里,您可以为Zapier创建一个IAM用户,以便在调用Lambda时使用它并将其链接到您的Zapier帐户。现在,您可以设置Action以使用您想要在事件中传递的任何参数来调用Lambda函数。

如果您想将HIT的结果返回到您的Zap中,将会更加复杂,因为Zapier不太适合MTurk HIT的异步特性。我在下面整理了一篇有关如何执行此操作的博客文章: https://www.daveschultzconsulting.com/2019/07/18/using-mturk-with-zapier/