예제 #1
0
def synchronous_call(contract_address, contract_type, func, args=None):
    call_sig = signature(utils.eth_endpoint('call_contract_function'),
                         kwargs={
                             'contract_address': contract_address,
                             'abi_type': contract_type,
                             'function': func,
                             'args': args,
                         })

    return utils.execute_synchronous_celery(call_sig)
예제 #2
0
def await_task_success(task_uuid, timeout=None, poll_frequency=0.5):
    elapsed = 0
    print(f'Awaiting success for task uuid: {task_uuid}')
    while timeout is None or elapsed <= timeout:
        sig = signature(utils.eth_endpoint('get_task'),
                        kwargs={'task_uuid': task_uuid})

        task = utils.execute_synchronous_celery(sig)

        if task and task['status'] == 'SUCCESS':
            return task
        else:
            sleep(poll_frequency)
            elapsed += poll_frequency

    raise TimeoutError