X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=mining%2F__init__.py;h=0bb7f7ebdf4c5ce7ba8dc60429d0f29d3f0882c8;hb=283e1d21295de838b3db75e10341bc6699d0afa7;hp=03366d3eace9ba6415767ede92889ac54ee2b661;hpb=52f76d96602bc5770f43b1ae1defc3149302ae4e;p=stratum-mining.git diff --git a/mining/__init__.py b/mining/__init__.py index 03366d3..0bb7f7e 100644 --- a/mining/__init__.py +++ b/mining/__init__.py @@ -1,9 +1,10 @@ from service import MiningService from subscription import MiningSubscription from twisted.internet import defer +import time @defer.inlineCallbacks -def setup(): +def setup(on_startup): '''Setup mining service internal environment. You should not need to change this. If you want to use another Worker manager or Share manager, @@ -27,6 +28,20 @@ def setup(): settings.BITCOIN_TRUSTED_PORT, settings.BITCOIN_TRUSTED_USER, settings.BITCOIN_TRUSTED_PASSWORD) + + import stratum.logger + log = stratum.logger.get_logger('mining') + + log.info('Waiting for bitcoin RPC...') + + while True: + try: + result = (yield bitcoin_rpc.getblocktemplate()) + if isinstance(result, dict): + log.info('Response from bitcoin RPC OK') + break + except: + time.sleep(1) coinbaser = SimpleCoinbaser(bitcoin_rpc, settings.CENTRAL_WALLET) (yield coinbaser.on_load) @@ -35,7 +50,8 @@ def setup(): coinbaser, bitcoin_rpc, settings.INSTANCE_ID, - MiningSubscription.on_block) + MiningSubscription.on_template, + Interfaces.share_manager.on_network_block) # Template registry is the main interface between Stratum service # and pool core logic @@ -45,7 +61,6 @@ def setup(): # This is just failsafe solution when -blocknotify # mechanism is not working properly BlockUpdater(registry, bitcoin_rpc) - - import stratum.logger - log = stratum.logger.get_logger('mining') - log.info("MINING SERVICE IS READY") + + log.info("MINING SERVICE IS READY") + on_startup.callback(True)