Add demurrage token amount adjust task
This commit is contained in:
parent
a075c55957
commit
6a75ce37c4
18
apps/cic-eth/cic_eth/aux/erc20_demurrage_token/__init__.py
Normal file
18
apps/cic-eth/cic_eth/aux/erc20_demurrage_token/__init__.py
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
# standard imports
|
||||||
|
import celery
|
||||||
|
|
||||||
|
# external imports
|
||||||
|
from erc20_demurrage_token.demurrage import DemurrageCalculator
|
||||||
|
|
||||||
|
celery_app = celery.current_app
|
||||||
|
|
||||||
|
|
||||||
|
class DemurrageCalculationTask(celery.Task):
|
||||||
|
|
||||||
|
demurrage_token_rates = {}
|
||||||
|
|
||||||
|
|
||||||
|
@celery_app.task(bind=True, base=DemurrageCalculationTask)
|
||||||
|
def get_adjusted_balance(self, token_symbol, amount, timestamp):
|
||||||
|
c = self.demurrage_token_rates[token_symbol]
|
||||||
|
return c.amount_since(amount, timestamp)
|
@ -7,6 +7,8 @@ import tempfile
|
|||||||
import re
|
import re
|
||||||
import urllib
|
import urllib
|
||||||
import websocket
|
import websocket
|
||||||
|
import stat
|
||||||
|
import importlib
|
||||||
|
|
||||||
# external imports
|
# external imports
|
||||||
import celery
|
import celery
|
||||||
@ -68,6 +70,8 @@ from cic_eth.task import BaseTask
|
|||||||
logging.basicConfig(level=logging.WARNING)
|
logging.basicConfig(level=logging.WARNING)
|
||||||
logg = logging.getLogger()
|
logg = logging.getLogger()
|
||||||
|
|
||||||
|
script_dir = os.path.dirname(os.path.realpath(__file__))
|
||||||
|
|
||||||
config_dir = os.path.join('/usr/local/etc/cic-eth')
|
config_dir = os.path.join('/usr/local/etc/cic-eth')
|
||||||
|
|
||||||
argparser = argparse.ArgumentParser()
|
argparser = argparse.ArgumentParser()
|
||||||
@ -79,6 +83,8 @@ argparser.add_argument('--default-token-symbol', dest='default_token_symbol', ty
|
|||||||
argparser.add_argument('--trace-queue-status', default=None, dest='trace_queue_status', action='store_true', help='set to perist all queue entry status changes to storage')
|
argparser.add_argument('--trace-queue-status', default=None, dest='trace_queue_status', action='store_true', help='set to perist all queue entry status changes to storage')
|
||||||
argparser.add_argument('-i', '--chain-spec', dest='i', type=str, help='chain spec')
|
argparser.add_argument('-i', '--chain-spec', dest='i', type=str, help='chain spec')
|
||||||
argparser.add_argument('--env-prefix', default=os.environ.get('CONFINI_ENV_PREFIX'), dest='env_prefix', type=str, help='environment prefix for variables to overwrite configuration')
|
argparser.add_argument('--env-prefix', default=os.environ.get('CONFINI_ENV_PREFIX'), dest='env_prefix', type=str, help='environment prefix for variables to overwrite configuration')
|
||||||
|
argparser.add_argument('--aux-all', action='store_true', help='include tasks from all submodules from the aux module path')
|
||||||
|
argparser.add_argument('--aux', action='append', type=str, default=[], help='add single submodule from the aux module path')
|
||||||
argparser.add_argument('-v', action='store_true', help='be verbose')
|
argparser.add_argument('-v', action='store_true', help='be verbose')
|
||||||
argparser.add_argument('-vv', action='store_true', help='be more verbose')
|
argparser.add_argument('-vv', action='store_true', help='be more verbose')
|
||||||
args = argparser.parse_args()
|
args = argparser.parse_args()
|
||||||
@ -109,6 +115,45 @@ if len(health_modules) != 0:
|
|||||||
health_modules = health_modules.split(',')
|
health_modules = health_modules.split(',')
|
||||||
logg.debug('health mods {}'.format(health_modules))
|
logg.debug('health mods {}'.format(health_modules))
|
||||||
|
|
||||||
|
|
||||||
|
# detect aux
|
||||||
|
aux_dir = os.path.join(script_dir, '..', '..', 'aux')
|
||||||
|
aux = []
|
||||||
|
if args.aux_all:
|
||||||
|
if len(args.aux) > 0:
|
||||||
|
logg.warning('--aux-all is set so --aux will have no effect')
|
||||||
|
for v in os.listdir(aux_dir):
|
||||||
|
if v[:1] == '.':
|
||||||
|
logg.debug('dotfile, skip {}'.format(v))
|
||||||
|
continue
|
||||||
|
aux_mod_path = os.path.join(aux_dir, v)
|
||||||
|
st = os.stat(aux_mod_path)
|
||||||
|
if not stat.S_ISDIR(st.st_mode):
|
||||||
|
logg.debug('not a dir, skip {}'.format(v))
|
||||||
|
continue
|
||||||
|
aux_mod_file = os.path.join(aux_dir, v,'__init__.py')
|
||||||
|
try:
|
||||||
|
st = os.stat(aux_mod_file)
|
||||||
|
except FileNotFoundError:
|
||||||
|
logg.debug('__init__.py not found, skip {}'.format(v))
|
||||||
|
continue
|
||||||
|
aux.append(v)
|
||||||
|
|
||||||
|
elif len(args.aux) > 0:
|
||||||
|
for v in args.aux:
|
||||||
|
aux_mod_file = os.path.join(aux_dir, v,'__init__.py')
|
||||||
|
try:
|
||||||
|
st = os.stat(aux_mod_file)
|
||||||
|
except FileNotFoundError:
|
||||||
|
logg.critical('cannot find explicity requested aux module {}'.format(v))
|
||||||
|
sys.exit(1)
|
||||||
|
logg.info('aux module {} found in path'.format(v))
|
||||||
|
aux.append(v)
|
||||||
|
|
||||||
|
for v in aux:
|
||||||
|
importlib.import_module('cic_eth.aux.' + v)
|
||||||
|
|
||||||
|
|
||||||
# connect to database
|
# connect to database
|
||||||
dsn = dsn_from_config(config)
|
dsn = dsn_from_config(config)
|
||||||
SessionBase.connect(dsn, pool_size=int(config.get('DATABASE_POOL_SIZE')), debug=config.true('DATABASE_DEBUG'))
|
SessionBase.connect(dsn, pool_size=int(config.get('DATABASE_POOL_SIZE')), debug=config.true('DATABASE_DEBUG'))
|
||||||
|
Loading…
Reference in New Issue
Block a user