-
Notifications
You must be signed in to change notification settings - Fork 76
/
agent.py
56 lines (52 loc) · 1.96 KB
/
agent.py
1
2
3
4
5
6
7
8
9
10
11
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
import sys
import math
import json
import requests
class Agent:
def __init__(self, username = '', password = '', address = '127.0.0.1', port = 5000):
self.url = 'http://%s:%d' % (address, port)
self.auth = (username, password)
def register(self, hyperparameters, metric, overwrite = False):
url = self.url + '/register'
data = { 'json': json.dumps(dict(
hyperparameters = hyperparameters,
metric = metric,
overwrite = overwrite,
))}
r = requests.get(url, auth = self.auth, data = data)
result = r.content.decode()
if result == 'Unauthorized Access':
print('Error: %s, please provide your username and password by:' % result)
print('\tagent = Agent(your_username, your_password)')
sys.exit()
if result == '<fail>':
msg = ''
while msg not in ['Y', 'y', 'N', 'n']:
print('overwrite? [Y/n]')
msg = sys.stdin.readline().strip()
if msg in 'Nn':
print('Record already exist, choose not to overwrite.')
sys.exit()
data = { 'json': json.dumps(dict(
hyperparameters = hyperparameters,
metric = metric,
overwrite = True,
))}
r = requests.get(url, auth = self.auth, data = data)
name = r.content.decode()
return name
def append(self, name, index, value):
if math.isinf(value):
print('HyperBorad agent get invalid value: %f' % value)
sys.exit()
url = self.url + '/append'
data = { 'json': json.dumps(dict(
name = name,
index = index,
value = value,
))}
r = requests.get(url, auth = self.auth, data = data)
result = r.content.decode()
if result != 'success':
print('HyperBorad agent failed to append: %s' % result)
sys.exit()