Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- #백준 #드래곤커브 #알고리즘
- sed명령어
- 비즈니스적 관점에서 생각하는 개발자 #개발자 마인드
- 개발자와 비즈니스 관계
- #알고리즘
- 알고리즘
- slack bot
- 개발자의 마인드
- 슬랙봇
- 숲을 바라보는 개발자
- 데이터베이스 오류
- django #django 5.0 #django 5.0 요약
- #데이터베이스 #트랜잭션 #ACID #격리수준
- 업비트 웹소켓
- add colume
- 개발자와 비즈니스
- django slack bot
- django slack
- MySQL
- 비즈니스적 관점에서 생각하는 개발자
- 정렬
- private.pem
- AWS Aurora
- 웹소켓 api
- 개발자에세이
- 비즈니스
- ssl.key
- django 슬랙봇
- public.pem
- innodb_buffer_pool_size 오류
Archives
- Today
- Total
Info-Tech
Cron작업을 통해 특정 거래소의 코인 정보들을 실시간으로 확인해보기 본문
선수지식
- 크롤링을 통해 특정 거래소의 코인정보 받아오기 (https://info-tech.tistory.com/17)
Python에서 Cron을 더 이쁘고 깔끔하게 사용해보기
- Crontab을 YAML로 작성이 가능
- cron job이 실패할 경우 제어 가능
- 실패시 해당 값을 재시도 할 수 있다.
- 유연하게 구성 가능
* python >= 3.5 버전에서 사용가능
#pip 설치
pip install yacron
#사용법
#-c 를 통해 yaml 위치한 파일을 가르킨다
yacron -c my-crontab.yaml
5분마다 echo 'foo-bar’ 를 실행하는 코드
jobs:
- name: test-01
command: echo "foobar"
shell: /bin/bash
schedule: "*/5 * * * *”
특정일(2017-07-19)에 5분마다 echo ‘foobar’ 실행하는 코드
jobs:
- name: test-01
command: echo "foobar"
schedule:
minute: "*/5"
dayOfMonth: 19
month: 7
year: 2017
dayOfWeek: "*"
이런식으로 사용이 가능하다.
- 우리가 원하는건 실시간 (여기선 60초 간격으로 하겠습니다)으로 coin의 정보를 가져오도록 python 파일을 만들겠습니다.
#파이썬 파일을 만들어줍니다.
1. vim get_coin_crawl.py
####get_coin_crawl.py 내용입니다
import http.client
import json
def get_coin_info_from_Coingecko():
# API호출되는 기본적인 도메인 주소를 정해줍니다.
base_url = ‘api.coingecko.com'
# 헤더를 정해줘야 합니다.
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36'
}
#해당 주소가 https로 시작함으로, 클라이언트를 HTTPSConnection로 연결 해 줍니다.
conn = http.client.HTTPSConnection(base_url)
# i값은 아직 지정해주지 않았습니다. 자신이 원하는 정보를 선택할 거래소를 넣어주면 됩니다
#이번에는 bithumb을 넣어주도록 하겠습니다.
i = ‘bithumb'
conn.request('GET', '/api/v3/exchanges/{0}'.format(i), headers=headers)
res = conn.getresponse()
#결과값이 dict형태로 되어있음으로 가공하기 쉽게 json으로 받아옵니다.
contents = json.loads(res.read().decode('utf-8’))
##이중에서 저는 현재 모든 코인에 대해서 현재가격과, 거래대금을 가져와보도록 하겠습니다.
##coingecko에서는 현재가격을 last, 거래대금은 volume으로 값을 내려주고 있습니다.
##이 값들은 tickers에 리스트 형태로 저장되어 있습니다.
for info in contents[‘tickers’]:
## base(코인), 가격, 거래대금 데이터베이스에 저장 (데이터 베이스는 자신이 구현한 model 일 것 입니다)
coin_models.save( info[‘base’], info[‘last’], info[‘volume’], 등등)
##함수 호출
get_coin_info_from_Coingecko()
2. 크론잡 yaml 만들기
vim get_coin_info.yaml
jobs:
- name: get_coin_info
command: python get_coin_crawl.py
shell: /bin/bash
schedule: “*/1 * * * *”
- 크론잡 실행
yacron -c get_coin_info.yaml
Admin에 쌓인 코인 정보들 결과화면
'프로그래밍 > 파이썬 & 장고' 카테고리의 다른 글
upbit websocket api사용방법 (0) | 2019.02.16 |
---|---|
Coingecko [코인 거래 사이트]의 정보를 간단한 크롤링 해보기 (1) | 2018.10.25 |
“SSL: CERTIFICATE_VERIFY_FAILED” 에러 (0) | 2018.10.24 |
Comments