코인 거래소 모니터링시스템 구축이야기(5/?)
매일 업비트 상장데이터 Mongo 적재
1. 상장코인적재 실행 및 배치 실행 주기
# -*- coding: utf-8 -*-
"""
매 초 Job 실행 if 로직으로 작업 수행
- 매일 정각 : 코인 상장 데이터 확인
- 매일 오전 9시 : 환율 데이터 저장
- 1분 단위 [상장코인 1/3 씩 수집] (
upbit : 3 , 23 , 43
bithum : 5 , 25 , 45
bitfinex : 7 , 27 , 47
)
"""
import datetime
from module import upbitModule
# 현재 시간을 확인
today_time = datetime.datetime.now()
now_date = today_time.strftime("%Y-%m-%d")
now_time = today_time.strftime("%H:%M:%S")
upbitModule.check_market(now_date)
2. MongoDB Connect 템플릿
import os
from pymongo import MongoClient
from pymongo.cursor import CursorType
# 접근정보
m_host = os.environ["MONGODB_SERVER_URL"]
m_port = os.environ["MONGODB_SERVER_PORT"]
m_user = os.environ["MONGODB_USER"]
m_pwd = os.environ["MONGODB_PWD"]
m_db = os.environ["MONGODB_DATABASE"]
class Database():
def __init__(self):
self.client = MongoClient(f'mongodb://{m_user}:{m_pwd}@{m_host}:{m_port}')
self.db = m_db
def insert_item_one(self, data, db_name=None, collection_name=None):
result = self.client[db_name][collection_name].insert_one(data).inserted_id
return result
3. 업비트 상장데이터 받아오기 및 Mongo Insert
import os
from flask import json
import requests
from module import mongoConnection
access_key = os.environ["UPBIT_OPEN_API_ACCESS_KEY"]
secret_key = os.environ["UPBIT_OPEN_API_SECRET_KEY"]
server_url = os.environ["UPBIT_OPEN_API_SERVER_URL"]
'''
업비트
- 매일 정각 : 코인 상장 데이터 확인
'''
def check_market(nowdate):
res = requests.get(server_url + "/v1/market/all?isDetails=false")
# print(res.json())
upbit_markets = res.json()
upbit_markets_redict = []
for market in upbit_markets:
market["market"] = market["market"].split("-")[1]
upbit_markets_redict.append(market)
upbit_markets_redict = list(map(dict, set(
tuple(sorted(d.items())) for d in upbit_markets_redict)))
mongoDB = mongoConnection.Database()
success_cnt = 0
for market in upbit_markets_redict:
market["market-place"] = "ko"
market["market-type"] = "upbit"
market["create_dt"] = nowdate
result_code = mongoDB.insert_item_one(market, db_name=mongoDB.db,
collection_name="coinShop")
success_cnt = success_cnt + (1 if result_code > 0 else 0)
return success_cnt
4. Mongo Find 로 확인
---- Mongo 접속 및 명령어 실행 -----
use('coin');
db.coinShop.find();
----- 결과확인 --------
[
{
"_id": {
"$oid": "60ceca7fbc4410ba48c08021"
},
"english_name": "TrueUSD",
"korean_name": "트루USD",
"market": "TUSD",
"market-place": "ko",
"market-type": "upbit",
"create_dt": "2021:06:20"
},....
]
5. 추후 진행 예정
bitfinex 마켓 데이터
환율 데이터
2. 서버 아키텍처 : https://limdh3325.blogspot.com/2021/04/2.html
3. MongoDB 설치 : https://limdh3325.blogspot.com/2021/04/3.html
4. 데이터 모델링 : https://limdh3325.blogspot.com/2021/05/4.html
5. MongoDB 저장 : https://limdh3325.blogspot.com/2021/06/5.html
댓글
댓글 쓰기