예제 #1
0
    def transact_with_function_task(self,
                                    signing_address,
                                    contract_address,
                                    contract_type,
                                    func,
                                    args=None,
                                    gas_limit=None,
                                    prior_tasks=None,
                                    reverses_task=None):

        kwargs = {
            'signing_address': signing_address,
            'contract_address': contract_address,
            'abi_type': contract_type,
            'function': func,
            'args': args,
            'prior_tasks': prior_tasks,
            'reverses_task': reverses_task
        }

        if gas_limit:
            kwargs['gas_limit'] = gas_limit

        return signature(eth_endpoint('transact_with_contract_function'),
                         kwargs=kwargs)
예제 #2
0
 def send_eth_task(self, signing_address, amount_wei, recipient_address):
     return signature(eth_endpoint('send_eth'),
                      kwargs={
                          'signing_address': signing_address,
                          'amount_wei': amount_wei,
                          'recipient_address': recipient_address
                      })
 def call_contract_function(self, contract_address, contract_type, func, args=None):
     return signature(
         eth_endpoint('call_contract_function'),
         kwargs={
             'contract_address': contract_address,
             'abi_type': contract_type,
             'function': func,
             'args': args,
         }
     )
예제 #4
0
    def deploy_contract_task(self,
                             signing_address,
                             contract_name,
                             args=None,
                             prior_tasks=None):

        return signature(eth_endpoint('deploy_contract'),
                         kwargs={
                             'signing_address': signing_address,
                             'contract_name': contract_name,
                             'args': args,
                             'prior_tasks': prior_tasks
                         })
 def process_send_eth_transaction(
         self,
         transaction_id,
         recipient_address,
         transfer_amount,
         task_id
 ):
     return signature(
         eth_endpoint('_process_send_eth_transaction'),
         args=(
             transaction_id,
             recipient_address,
             transfer_amount,
             task_id
         )
     )
 def process_deploy_contract_transaction(
         self,
         transaction_id,
         contract_name,
         args,
         kwargs,
         gas_limit,
         task_id
 ):
     return signature(
         eth_endpoint('_process_deploy_contract_transaction'),
         args=(
             transaction_id,
             contract_name,
             args,
             kwargs,
             gas_limit,
             task_id
         )
     )
    def queue_send_eth(
        self,
        signing_address,
        amount_wei,
        recipient_address,
        prior_tasks,
        posterior_tasks,
    ):
        """
        This is a slightly smelly special case where the transaction supervisor needs to call the higher-level
        task manager to get a send_eth task created for topup purposes.
        """
        sig = signature(eth_endpoint('send_eth'),
                        kwargs={
                            'signing_address': signing_address,
                            'amount_wei': amount_wei,
                            'recipient_address': recipient_address,
                            'prior_tasks': prior_tasks,
                            'posterior_tasks': posterior_tasks
                        })

        return celery_utils.queue_sig(sig)
 def process_function_transaction(
         self,
         transaction_id,
         contract_address,
         abi_type,
         fn,
         args,
         kwargs,
         gas_limit,
         task_id
 ):
     return signature(
         eth_endpoint('_process_function_transaction'),
         args=(
             transaction_id,
             contract_address,
             abi_type,
             fn,
             args,
             kwargs,
             gas_limit,
             task_id
         )
     )
예제 #9
0
    scope.set_tag("domain", config.APP_HOST)

chain_config = config.CHAINS[celery_utils.chain]

from config import logg

logg.info(f'Using chain {celery_utils.chain}')

app = Celery('tasks',
             broker=config.REDIS_URL,
             backend=config.REDIS_URL,
             task_serializer='json')

app.conf.beat_schedule = {
    "maintain_eth_balances": {
        "task": celery_utils.eth_endpoint('topup_wallets'),
        "schedule": 600.0
    },
}
app.conf.beat_schedule = {
    'third-party-transaction-sync': {
        'task':
        celery_utils.eth_endpoint('synchronize_third_party_transactions'),
        'schedule': chain_config['THIRD_PARTY_SYNC_SCHEDULE'],
    }
}

w3 = Web3(HTTPProvider(chain_config['HTTP_PROVIDER']))

w3_websocket = Web3(WebsocketProvider(chain_config['WEBSOCKET_PROVIDER']))
예제 #10
0
processor_task_config = {
    **base_task_config, 'max_retries': 10,
    'autoretry_for': (LockedNotAcquired, ),
    'queue': 'processor',
    'default_retry_delay': 3,
    'retry_backoff': False
}

# @signals.task_failure.connect
# def on_task_failure(**kwargs):
#     print('[task:%s]' % (kwargs['sender'].request.correlation_id, )
#           + '\n'
#           + kwargs.get('einfo').traceback)


@app.task(name=eth_endpoint('synchronize_third_party_transactions'),
          **low_priority_config)
def synchronize_third_party_transactions(self):
    return blockchain_sync.synchronize_third_party_transactions()


@app.task(name=eth_endpoint('add_transaction_filter'), **low_priority_config)
def add_transaction_filter(self,
                           contract_address,
                           contract_type,
                           filter_parameters,
                           filter_type,
                           decimals=18,
                           block_epoch=None):
    f = blockchain_sync.add_transaction_filter(contract_address, contract_type,
                                               filter_parameters, filter_type,
 def handle_error(self, transaction_id):
     return signature(eth_endpoint('_handle_error'),
                      args=(transaction_id, ))
 def check_transaction_response(self):
     return signature(eth_endpoint('_check_transaction_response'))
 def attempt_transaction(self, task_uuid):
     return signature(eth_endpoint('attempt_transaction'),
                      kwargs={'task_uuid': task_uuid})
예제 #14
0
processor_task_config = {
    **base_task_config,
    'max_retries': 10,
    'autoretry_for': (LockedNotAcquired,),
    'queue': 'processor',
    'default_retry_delay': 3,
    'retry_backoff': False
}

# @signals.task_failure.connect
# def on_task_failure(**kwargs):
#     print('[task:%s]' % (kwargs['sender'].request.correlation_id, )
#           + '\n'
#           + kwargs.get('einfo').traceback)

@app.task(name=eth_endpoint('get_third_party_sync_metrics'), **base_task_config)
def get_third_party_sync_metrics(self):
    return blockchain_sync.get_metrics()

@app.task(name=eth_endpoint('get_failed_block_fetches'), **base_task_config)
def get_failed_block_fetches(self):
    return blockchain_sync.get_failed_block_fetches()

@app.task(name=eth_endpoint('get_failed_callbacks'), **base_task_config)
def get_failed_callbacks(self):
    return blockchain_sync.get_failed_callbacks()

@app.task(name=eth_endpoint('force_fetch_block_range'), **base_task_config)
def force_fetch_block_range(self, filter_address, floor, ceiling):
    return blockchain_sync.force_fetch_block_range(filter_address, floor, ceiling)