2017-04-30 1 views
0

J'ai rencontré un problème lors de la soumission d'un HIT au sandbox Amazon Mechanical Turk.Message d'erreur lors de l'envoi de HIT à Amazon Mechanical Turk

Je suis en utilisant le code suivant pour soumettre une HIT:

external_content = """" 
<ExternalQuestion xmlns="http://mechanicalturk.amazonaws.com/AWSMechanicalTurkDataSchemas/2006-07-14/ExternalQuestion.xsd"> 
    <ExternalURL>https://MY_HOST_GOES_HERE/</ExternalURL> 
    <FrameHeight>400</FrameHeight> 
</ExternalQuestion> 
""" 

import boto3 

import os 

region_name = 'us-east-1' 

aws_access_key_id = 'MYKEY' 
aws_secret_access_key = 'MYSECRETKEY' 

endpoint_url = 'https://mturk-requester-sandbox.us-east-1.amazonaws.com' 

# Uncomment this line to use in production 
# endpoint_url = 'https://mturk-requester.us-east-1.amazonaws.com' 

client = boto3.client('mturk', 
         endpoint_url=endpoint_url, 
         region_name=region_name, 
         aws_access_key_id=aws_access_key_id, 
         aws_secret_access_key=aws_secret_access_key, 
        ) 

# This will return $10,000.00 in the MTurk Developer Sandbox 
print(client.get_account_balance()['AvailableBalance']) 


response = client.create_hit(Question=external_content, 
          LifetimeInSeconds=60 * 60 * 24, 
          Title="Answer a simple question", 
          Description="Help research a topic", 
          Keywords="question, answer, research", 
          AssignmentDurationInSeconds=120, 
          Reward='0.05') 

# The response included several helpful fields 
hit_group_id = response['HIT']['HITGroupId'] 
hit_id = response['HIT']['HITId'] 

# Let's construct a URL to access the HIT 
sb_path = "https://workersandbox.mturk.com/mturk/preview?groupId={}" 
hit_url = sb_path.format(hit_group_id) 

print(hit_url) 

Le message d'erreur que je reçois est:

botocore.exceptions.ClientError: An error occurred (ParameterValidationError) when calling the CreateHIT operation: There was an error parsing the XML question or answer data in your request. Please make sure the data is well-formed and validates against the appropriate schema. Details: Content is not allowed in prolog. (1493572622889 s) 

Ce qui pourrait être la raison ici? Le fichier XML est entièrement compatible avec le schéma xml situé sur les serveurs Amazon.

Le code HTML retourné par l'hôte externe est:

<!DOCTYPE html> 
<head> 
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'/> 
<script src='https://s3.amazonaws.com/mturk-public/externalHIT_v1.js' type='text/javascript'></script> 
</head> 
<body> 
<!-- HTML to handle creating the HIT form --> 
<form name='mturk_form' method='post' id='mturk_form' action='https://workersandbox.mturk.com/mturk/externalSubmit'> 
<input type='hidden' value='' name='assignmentId' id='assignmentId'/> 
<!-- This is where you define your question(s) --> 
<h1>Please name the company that created the iPhone</h1> 
<p><textarea name='answer' rows=3 cols=80></textarea></p> 
<!-- HTML to handle submitting the HIT --> 
<p><input type='submit' id='submitButton' value='Submit' /></p></form> 
<script language='Javascript'>turkSetAssignmentID();</script> 
</body> 
</html> 

Merci

Répondre

1

Ce message "Détails: Le contenu est pas autorisé dans Prolog." est l'indice. Il s'avère que ce que cela signifie est que vous ne pouvez pas avoir du contenu en dehors de l'endroit où il est prévu. C'est ce qui se passe généralement lorsqu'un caractère indésirable (pensez à des citations intelligentes ou à des valeurs ASCII non imprimables) apparaît. Ceux-ci peuvent être une vraie douleur dans la crosse à diagnostiquer.

Dans votre cas, il est un peu plus facile de déboguer, mais tout aussi frustrant. Consultez cette ligne:

external_content = """" 

Il se avère que Python n'a besoin que trois guillemets (« » «) a été rendu en fait dans le cadre du XML afin de reconnaître une définition de chaîne multi-ligne Ainsi votre quatrième. ». Remplacez cette ligne par ceci:

external_content = """ 

Et vous êtes en or. Je viens de le tester et ça marche. Désolé pour toute la frustration, mais j'espère que cela vous débloque. Bon dimanche!

+0

Hahaha, vous avez sauvé ma journée! Merci beaucoup! –