使用boto3创建带ExternalQuestion的HITs未显示于MTurk请求者账户,求查看方法
解决MTurk编程创建HITs无法在Web界面查看的问题
作为经常用MTurk做众包任务的开发者,我来帮你梳理下可能的问题和解决办法:
首先,排查最常见的环境不匹配问题:
- 你用boto3创建HITs时,一定要确认代码里配置的是沙箱环境还是生产环境:
- 如果是沙箱(endpoint_url设为
https://mturk-requester-sandbox.us-east-1.amazonaws.com),必须去https://requestersandbox.mturk.com/manage查看; - 如果是生产环境(endpoint_url设为
https://mturk-requester.us-east-1.amazonaws.com),才去https://requester.mturk.com/manage查看。
很多新手会搞混这两个完全隔离的环境,导致创建的HITs在错误的页面找不到。
- 如果是沙箱(endpoint_url设为
其次,检查Web界面的筛选条件:
- 登录对应环境的管理页面后,默认可能只显示「活跃的HITs」,如果你的HITs刚创建还在审核,或者已经完成/过期,需要调整筛选器:
- 点击页面顶部的筛选选项,选择「所有HITs」或者对应状态的分类(比如「已提交」「已批准」);
- 另外,编程创建的ExternalQuestion HITs通常会归类在「自定义HITs」下,你可以在左侧导航栏找到这个分类,进去查看详情。
如果Web界面还是找不到,用boto3 API直接查询进度是更可靠的方式:
你可以通过几个核心接口获取HITs的实时状态和进度:
list_hits():获取你账号下所有HITs的列表,包含每个HIT的状态、已分配数量、已完成数量等基本信息
示例代码:import boto3 # 替换成你的环境配置 mturk = boto3.client( 'mturk', endpoint_url='https://mturk-requester-sandbox.us-east-1.amazonaws.com', aws_access_key_id='YOUR_ACCESS_KEY', aws_secret_access_key='YOUR_SECRET_KEY', region_name='us-east-1' ) response = mturk.list_hits() for hit in response['HITs']: print(f"HIT ID: {hit['HITId']}") print(f"标题: {hit['Title']}") print(f"状态: {hit['HITStatus']}") print(f"已分配/已完成/总任务数: {hit['NumberOfAssignmentsPending']}/{hit['NumberOfAssignmentsCompleted']}/{hit['MaxAssignments']}") print("---")get_hit(HITId='your_hit_id'):获取单个HIT的详细信息,包括创建时间、过期时间、问题内容等list_assignments_for_hit(HITId='your_hit_id'):获取该HIT下所有工人的提交记录,包括是否已批准、提交时间等,方便你审核和统计进度
最后,如果以上方法都不行,可能是你的HITs创建过程中出现了错误(比如参数不符合要求导致创建失败),可以在调用create_hit后打印返回的响应,确认HIT是否成功创建,以及获取正确的HITId用于后续查询。
内容的提问来源于stack exchange,提问作者Utkarsh Mall
相关产品推荐
相关产品推荐

