Newer
Older
#!/usr/bin/env python3
import json
import argparse
from urllib import request, error
# 提交答案服务域名或IP, 将在赛前告知
JUDGE_SERVER = "http://judge.aiops-challenge.com" # 评测服务地址
# 团队标识, 可通过界面下方权限获取, 每个ticket仅在当前赛季有效,如未注明团队标识,结果不计入成绩
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
def submit(data, judge_server=None, ticket=None):
judge_server = judge_server or JUDGE_SERVER
ticket = ticket or TICKET
if not judge_server or not ticket:
missing = ["judge_server" if not judge_server else "", "ticket" if not ticket else ""]
missing = [m for m in missing if m]
print("Required fields must be provided: %s" % ', '.join(missing))
return None
req_data = json.dumps({'data': data}).encode('utf-8')
req = request.Request(judge_server, data=req_data, headers={'ticket': ticket, 'Content-Type': 'application/json'})
try:
with request.urlopen(req) as response:
response_body = response.read().decode('utf-8')
return json.loads(response_body)['submission_id']
except error.HTTPError as e:
msg = e.reason
response_body = e.read().decode('utf-8')
if response_body:
try:
msg = json.loads(response_body)['detail']
except:
pass
print("[Error %s] %s" % (e.code, msg))
except error.URLError as e:
print(e.reason)
return None
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Submit to judge server")
parser.add_argument('result_path', nargs='?', default='result.jsonl', help='Path to the submission file, default is result.jsonl')
parser.add_argument('-s', '--server', help='Judge server URL, if not specified, the global JUDGE_SERVER variable will be used')
parser.add_argument('-k', '--ticket', help='Submission ticket, if not specified, the global TICKET variable will be used')
args = parser.parse_args()
try:
with open(args.result_path, 'r') as file:
data = [json.loads(line.strip()) for line in file if line.strip()]
except Exception as e:
print(e)
exit(1)
submission_id = submit(data, judge_server=args.server, ticket=args.ticket)
if submission_id:
print("Success! Your submission ID is %s." % submission_id)
exit(0)
else:
exit(1)