본문 바로가기

Programming177

k6 retry와 sleep k6를 사용하다보니 request fail 횟수가 드문드문 나와서 retry를 줬을때는 request fail이 얼마나 발생하는지 알고 싶어졌다. k6 자체적으로 retry를 제공해 주지는 않는 것 같고 아래와 같이 custom function을 만들어야 하는 것 같다. import { sleep } from 'k6'; import http from 'k6/http'; function httpGet(url, params) { var res; for (var retries = 3; retries > 0; retires--) { res = http.get(url, params) if (res.status != 400 && res.status < 500){ return res; } sleep(1); } ret.. 2024. 4. 5.
es curator es에서 index가 기하급수적으로 늘어나면서 디스크 용량이 부족해지기 시작했다. index 정리를 하자... 그래서 찾아본게 curator!! 쉽게 말해서 index를 날짜 패턴별로 삭제를 쉽게 도와주는 프로그램이다. 이제 curator를 설치하고 실행하는 걸 해 보자. 아래와 같이 curator를 설치한다. $> pip install elasticsearch-curator 설치 시에 중요한 점이 있는데 curator 버전과 es의 버전을 major 정도는 맞춰주어야 동작이 원할하게 된다. 만약에 버전이 안 맞는 경우 curator 실행 시에 아래와 같은 에러가 발생 할 수 있다. File "/hanmail/.pyenv/versions/3.9.4/lib/python3.9/base64.py", line .. 2024. 3. 8.
kibana 단축 url 만들기 kibana url을 공유할 때면 url이 너무 크고 복잡해서 읽기도 힘들고 어렵다. 그래서 찾아본 결과 아래의 형태의 단축 url을 만들수가 있다. https://test-kibana.com/goto/241148663024b73eb8119de13732df6 방법은 의외로 너무나 간단하다. 일단 kibana를 열고 왼쪽 상단의 menu 중 share 메뉴를 클릭한다. share 버튼을 클릭하면 아래와 같은 창이 생성되는데 여기서 short url 버튼을 enable 시켜주면 kibana 단축 url이 생성된다. 2024. 2. 7.
k6로 성능 테스트 하기 mac 환경에서 성능 테스트를 진행할 목적으로 k6를 써보기로 했다. 설치는 간단하다. 아래와 같이 설치 하자 $> brew install k6 k6를 실행하기 위해서는 실행 코드가 담긴 js 스크립트 파일이 있어야 한다. 아래와 같이 작성하자. import http from 'k6/http'; import { SharedArray } from 'k6/data'; import { htmlReport } from "https://raw.githubusercontent.com/benc-uk/k6-reporter/main/dist/bundle.js"; import { textSummary } from "https://jslib.k6.io/k6-summary/0.0.1/index.js"; export funct.. 2023. 12. 29.
python-snappy 설치하기 단순하게 pip install python-snappy를 실행하면 snappy.h 파일이 없다는 에러 메시지가 나온다. mac silicon 기준으로 일단 brew로 snappy를 설치해주자. $> brew install snappy 이 후 이제 이 snappy를 wrapping하는 python-snappy를 설치해야 한다. silicon의 경우 CPPFLAG 옵션을 통해 library와 헤더파일 경로를 명시해주어야 한다. 아래와 같이 명시해 주자. $> CPPFLAGS="-I/opt/homebrew/include -L/opt/homebrew/lib" pip install python-snappy 설치가 잘 되는 것을 확인할 수가 있다. 2023. 12. 15.
anaconda에서 pipenv 그리고 다시 pyenv로... anaconda을 그다지 추천하지 않는 방법이라 pipenv를 써보기로 결정했다. 일단 anaconda의 단점으로 너무나 큰 패키지 파일.. 그리고 conda install 시, anaconda에 패키징 되어 있는 패키지만 설치가 된다는 단점.. 요런 것들이 사용자로 하여금 약~~~간 찝찝함을 주었다. 게다가 pipenv는 python에서 공식으로 지원해주는 패키지 툴이라길래 믿음이 갔다. pipenv에는 lock 파일이 있어서, 보다 명확한 패키지 dependency를 보장한다. 단순 requirements.txt로도 해당 패키지의 의존패키지까지 dependency를 보장해주지는 않는다고 들었는데, pipenv는 해당 문제를 개선할 수 있어 보였다. $> brew install pipenv 위 명령을 .. 2023. 12. 14.
눈물의 pyenv .... 맥을 arm64로 변경하고 나서부터인가.. 갑자기 pyenv intall 이 동작이 되지 않았다!!! ~/.pyenv 폴더를 지우고, brew로 pyenv를 다시 깔아 봤으나 pyenv install로 파이썬을 설치하려고 하면 아래와 같은 에러가 발생!! Traceback (most recent call last): File "", line 1, in File "/Users/machizhov/.pyenv/versions/3.8.6/lib/python3.8/curses/__init__.py", line 13, in from _curses import * ModuleNotFoundError: No module named '_curses' 분명 mac에서 python 실행 후 from _curses impor.. 2023. 12. 14.
logging config 사용하기 python에서는 log config를 활용해서 코드 상에서의 로그 설정 없이 로그를 설정 할 수가 있다. 우선 아래와 같은 로그 파일을 생성한다. [loggers] keys=root,test1Logger,test2Logger [handlers] keys=streamHandler,fileHandler, rotatingFileHandler [formatters] keys=simpleFormatter,complexFormatter [formatter_simpleFormatter] format=[%(name)s] %(message)s [formatter_complexFormatter] format=%(asctime)s %(levelname)s [%(name)s] [%(filename)s:%(lineno)d] .. 2023. 1. 9.
동적으로 module import 하기 파이썬에서 정적으로 module을 import를 하려고 하면 아래와 같이 사용하면 된다. import xxxx 그렇다면 동적으로 import는 어떻게 해야 할까?? 여기서는 손쉽게 import 할 수 있도록 importlib를 이용한 방법을 소개한다. 예를 들어 lib폴더에 module.py라는 함수가 있다고 가정하자. module.py def print(): print('module') 아래와 같이 사용함으로써 lib의 module.py package를 가져올 수가 있다. import os import sys sys.path.append(os.path.dirname(os.path.abspath(os.path.dirname(__file__)))) import importlib pkg = importlib.. 2022. 10. 1.