import json
import time
from config import cfg
from chain_data.driver import DbMytokenConn
from address_overview.driver import RedCli
from kafka import KafkaProducer
from kafka.errors import KafkaError
r = RedCli()
dbmt = DbMytokenConn()
def task_data_producer(dic_ass):
producer = KafkaProducer(bootstrap_servers=cfg.get('kafka', 'online_brokers').split(','))
topic = "topic_a"
try:
producer.send(topic, json.dumps(dic_ass).encode())
print("send:" + json.dumps(dic_ass))
except KafkaError as e:
print(e)
finally:
producer.close()
print('done')
def tuple_change_dict(a):
for v in a:
dic = {'market_id': str(v[0]),
'contract_address': str(v[1]),
'lock_usd': float(v[2])}
task_data_producer(dic)
def process_msg():
now_time = int(time.time())
utc8Hour0Time = int(time.mktime(time.strptime(time.strftime("%Y-%m-%d", time.localtime(now_time)), "%Y-%m-%d")))
CHAIN_CURRENCY_DATA_LAST_KEY = 'chain_currency_data_last_offset_id_time_{}'.format(utc8Hour0Time)
if r.reCli.get(CHAIN_CURRENCY_DATA_LAST_KEY) is None:
offset = 0
else:
offset = int(r.reCli.get(CHAIN_CURRENCY_DATA_LAST_KEY))
while True:
rawSQL = "SELECT `market_id`,`contract_address`,lock_usd FROM `chain_currency_data` " \
"where theday < {} ORDER BY `lock_usd` DESC limit {},10".format(utc8Hour0Time, offset)
qlalchemy_object = dbmt.mt_engine.execute(rawSQL)
if not qlalchemy_object.rowcount:
break
tuple_change_dict(qlalchemy_object)
offset += 1
r.reCli.set(CHAIN_CURRENCY_DATA_LAST_KEY, offset)
if __name__ == '__main__':
print('ProductionMsg Starting.')
process_msg()
print('ProductionMsg Stop.')