기본 콘텐츠로 건너뛰기

코인 거래소 모니터링시스템 구축이야기(5/?) - Mongo 저장

 

코인 거래소 모니터링시스템 구축이야기(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(selfdatadb_name=Nonecollection_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(dictset(
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(marketdb_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/?) - 서버 아키텍처

  코인 거래소 모니터링시스템 구축이야기(2/?) 코인 거래소 모니터링 시스템 구축 (가칭 : 김프멈춰) 서버 구성 사용자가 확인할 서비스 페이지, 데이터 저장소에 대한 서버는 NAS 서버로 운영 일일 Data 크롤링 서버는 Cloud 서버 이용하여 운영 - 서비스페이지 및 데이터 저장소 (Nas 서버) : Docker container ubuntu 20.04 - 일일 크롤링 서버 (Cloud at Cost Cloud 서버) : CentOS 7 서버 아키텍처 서버 아키텍처 레퍼런스 빗썸 : https://apidocs.bithumb.com/ 업비트 : https://docs.upbit.com/ 홍콩 Bitfinex : https://docs.bitfinex.com/docs 몽고 DB 설치 : https://coterie.tistory.com/20 1. 개요 :  https://limdh3325.blogspot.com/2021/04/1.html 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