Есть ли способ или обходной путь для планирования HIT Amazon Mechanical Turk? - PullRequest
0 голосов
/ 30 января 2019

Мне нужен определенный HIT для запуска каждую пятницу утром.Есть ли способ сделать это или любой обходной путь с внешней платформой (IFTTT, zapier оба не работают), чтобы сделать это?Мне кажется, что это очень фундаментальная особенность.

Ответы [ 2 ]

0 голосов
/ 18 июля 2019

FWIW, я разобрался, как использовать Zapier с MTurk.Если у вас платный план, вы можете использовать приложение AWS Lambda для запуска некоторого кода, который создаст HIT на MTurk.Для этого вам нужна учетная запись AWS, которая связана с вашей учетной записью MTurk.Как только вы это сделаете, вы можете создать функцию Lambda, которая содержит следующий код для создания HIT на MTurk:

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.Оттуда вы можете создать пользователя IAM для Zapier, который будет использоваться при вызове вашего Lambda, и связать его с вашей учетной записью Zapier.Теперь вы можете настроить свое Действие для вызова этой лямбда-функции с любыми параметрами, которые вы хотите передать в событии.

Если вы хотите получить результаты HIT обратно в ваш Zap, это будет сложнее, потому что Zapier нене подходят для асинхронной природы MTurk HIT.Я собрал сообщение в блоге о том, как это сделать ниже: https://www.daveschultzconsulting.com/2019/07/18/using-mturk-with-zapier/

0 голосов
/ 30 января 2019

В MTurk API нет встроенной функции для запланированного запуска HIT.Это должно быть сделано с помощью пользовательского программирования.

Если вы ищете решение «под ключ», планирование может быть выполнено с помощью TurkPrime с использованием времени запуска по расписанию, указанного на вкладке 5 («Настройка» иплатежи)

...