else:
return bitcoind.rpc_getmemorypool()
try:
+ start = time.time()
work = yield go()
+ end = time.time()
except jsonrpc.Error_for_code(-32601): # Method not found
use_getblocktemplate = not use_getblocktemplate
try:
+ start = time.time()
work = yield go()
+ end = time.time()
except jsonrpc.Error_for_code(-32601): # Method not found
print >>sys.stderr, 'Error: Bitcoin version too old! Upgrade to v0.5 or newer!'
raise deferral.RetrySilentlyException()
height=work['height'],
last_update=time.time(),
use_getblocktemplate=use_getblocktemplate,
+ latency=end - start,
))
@deferral.retry('Error submitting primary block: (will retry)', 10, 10)
'desired_version_rates': graph.DataStreamDescription(dataview_descriptions, multivalues=True,
multivalue_undefined_means_0=True, default_func=build_desired_rates),
'traffic_rate': graph.DataStreamDescription(dataview_descriptions, is_gauge=False, multivalues=True),
+ 'getwork_latency': graph.DataStreamDescription(dataview_descriptions),
}, hd_obj)
task.LoopingCall(lambda: _atomic_write(hd_path, json.dumps(hd.to_obj()))).start(100)
@wb.pseudoshare_received.watch
hd.datastreams['desired_versions'].add_datum(t, dict((str(k), v/vs_total) for k, v in vs.iteritems()))
hd.datastreams['desired_version_rates'].add_datum(t, dict((str(k), v/vs_total*pool_total) for k, v in vs.iteritems()))
task.LoopingCall(add_point).start(5)
+ @node.bitcoind_work.changed.watch
+ def _(new_work):
+ hd.datastreams['getwork_latency'].add_datum(time.time(), new_work['latency'])
new_root.putChild('graph_data', WebInterface(lambda source, view: hd.datastreams[source].dataviews[view].get_data(time.time())))
web_root.putChild('static', static.File(os.path.join(os.path.dirname(sys.argv[0]), 'web-static')))
<h2>Traffic rate</h2>
<svg id="traffic_rate"></svg>
+ <h2>Getwork Latency</h2>
+ <svg id="getwork_latency"></svg>
+
<script type="text/javascript">
function compose() {
var funcs = arguments;
d3.json("/web/graph_data/traffic_rate/last_" + lowerperiod, function(data) {
plot(d3.select('#traffic_rate'), 'B/s', 'B', data_to_lines(data, function(line){ return parseInt(line.label) }), true);
});
+
+ plot_later(d3.select("#getwork_latency"), "s", null, [
+ {"url": "/web/graph_data/getwork_latency/last_" + lowerperiod, "color": "#FF0000", "label": "Getwork Latency"}
+ ], false);
}
d3.json('/local_stats', function(local_stats) {