목차
디스코드 알림 메시지 보내기
- https://github.com/kyb3r/dhooks 를 사용하였습니다.
- dhooks에는 비동기 코드도 구현되어져 있기 때문에 메시지를 보내는 동안의 프로그램이 멈추는 것을 방지해줄 수 있습니다.
디스코드 웹후크 URL 발급 과정
- dhooks를 사용하기 위해서는 디스코드 채널의 webhook url이 필요합니다.
- webhook url 발급 과정
- 서버추가하기를 통해 알림 채널 생성
- 생성된 채팅 채널의 설정(채널 편집)
- 연동 클릭 후 웹후크 만들기 클릭
- 생성된 웹후크에서 웹후크 URL 복사를 통해 해당 URL을 가져올 수 있습니다.
동기 VS 비동기
- 동기 방식으로 코드를 작성할 경우, 메시지를 보내는 시간동안 잠깐동안 프로그램이 중지할 수 있습니다. 이 메시지를 보내는 작업 또한 IO작업이므로 비동기 방식으로 코드를 작성할 경우 프로그램이 최대한 멈추지 않고 작동할 수 있습니다.
- 자동매매의 경우 데이터를 실시간으로 계속 받아오는 것이 중요하므로 최대한 프로그램을 멈추지 않게 하는 것이 중요합니다. 따라서 비동기 방식으로 코드를 작성해야합니다.
- 아래 두 코드를 비교해보면 아주 약간이지만, 두 채널에서 메시지가 도착하는 시간에서 차이가 존재하는 것을 확인할 수 있습니다.
동기 방식
- 예시 코드
-
import dhooks price_url = "웹후크URL1" buy_sell_url = "웹후크URL2" price_hook = dhooks.Webhook(price_url) buy_sell_hook = dhooks.Webhook(buy_sell_url) def price_send_message(message): price_hook.send(message) def buy_sell_message(message): buy_sell_hook.send(message) def main(): price_send_message("hi") buy_sell_message("hi") main()
-
비동기 코드
- 예시 코드
-
import dhooks import asyncio price_url = "웹후크URL1" buy_sell_url = "웹후크URL2" async def price_send_message(message): async with dhooks.Webhook.Async(price_url) as hook: await hook.send(message) async def buy_sell_message(message): async with dhooks.Webhook.Async(buy_sell_url) as hook: await hook.send(message) async def main(): await asyncio.gather( price_send_message("hi"), buy_sell_message("hi"), ) asyncio.run(main())
-
'Algorithm Trading > ComDon 프로그램 개발이야기' 카테고리의 다른 글
9. 비동기 프로그래밍 (0) | 2024.01.28 |
---|---|
8. pyautogui (1) | 2024.01.27 |
7. 이베스트투자증권 OPEN API (0) | 2024.01.22 |
6. .env 파일 작성 (0) | 2024.01.21 |
5. 주문딜레이 시간 체크 / 비동기 처리의 장점 (1) | 2024.01.09 |