본문 바로가기
반응형

Python153

Python - API 429, 422 코드 내용 및 해결 방안 Discourse API를 이용해서 자료를 업데이트 할 때, 종종 422, 429 오류가 발생하여 문제 해결했던 과정을 정리해 보았다. 먼저 429 에러 코드이다. 429 Error Code는 실제로 422의 연장선 상으로 자주 요청해서 발생하는 오류이다. 429 - HTTP 429 Too Many Requests 즉 웹 요청이 자주 발생하는 경우 오류코드를 볼 수 있으며, 개발자 관점에서는 호출 대기시간을(time.sleep)을 주어서 해결이 가능하다. 다음은 422 오류는 구조적으로 MarkDown 해독이 불가능 해서 나타나는 오류이기 때문에 정확하게 오류가 무엇인지 인지할 필요가 있다. 422 Unprocessable Entity 정확히는 Data 에 구조체가 인식할 수 없는다 오류이다. Disco.. 2023. 3. 27.
Python - 코루틴(Co-routione)을 이용한 Multi-Process 사용하기 코루틴을 사용하여 멀티프로세스를 관리하면 보다 효과적으로 프로세스의 흐름 제어가 가능하다. 코루틴 코드를 작성하는 방법은 asyncio 모듈을 사용하는 것이다. 그리고 Multi-Process는 multiprocessing 모듈을 통해서 작성할 수 있다. asyncio 모듈은 이벤트 루프를 기반으로하는 비동기 프로그래밍을 제공하며, 코루틴을 사용하여 작성된 코드를 실행할 수 있다. 코루틴에 대해서는 아래에서 확인할 수 있다. 코루틴과 이벤트루프 이해 정리 코루틴이란 코루틴은 특정 함수의 루프등을 실행하다가 일시 정지하고 재개할 수 있는 구성 요소를 말한다. 쉽게 말해 필요에 따라 일시 정지할 수 있는 함수를 의미한다,. 코루틴을 사용하여 asecurity.dev asyncio.gather() 함수를 사용.. 2023. 3. 21.
Python - Datetime 을 Unixtime 으로 변환 정말 시간 관련해서 자주 사용되기 때문에, 오늘 Unixtime으로 변경하면서 몇가지 실수한 부분이 있어 이것도 확인하는 겸하여 정보를 정리해 본다. UnixTime은 기본적으로 1970년 1월 1일을 기준으로 하기 때문에 현재 타임값에서 이시간을 빼주고 남은 값을 초단위로 계산하여 사용할 수 있다. from datetime import datetime now_time = datetime.utcnow() unix_time = (now_time - datetime(1970,1,1)).total_seconds() print(unix_time) 2023. 3. 16.
Python - JSON(dict)에 키(Key), 서브 키(Sub-key)가 있는지 확인 Python에서 JSON(dict) 데이터 구조는 가장 많이 사용되는 코드 구조중 하나이다. 여기에서 특정 키(Key)가 존재하는지 자주 확인하여 해당 값이 존재하는 경우 값을 받아오는 경우가 많다. 키(Key)확인해는 방법은 in 키워드를 이용하거나 get 함수를 사용하는 방법으로 2가지를 사용할 수 있는 데, 여기에서는 이를 어떻게 할 수있는지 정리해 보고자 한다. in 키워드 in 키워드를 이용하는 방법은, JSON 데이터에 찾고자 하는 키가 있는지를 검색할 수 있다. dict_data = {'a':'aaa', 'b':'bbb'} if 'a' in dict_data: print('dict_data in a is True') else: print('dict_data in a is False') 값을 .. 2023. 3. 13.
Python - (Nmap) HTTP 서비스(service) 버전 정보를 가져오기 서비스 포트가 오픈되어 있어 있는 상태라면 서비스 버전이나 관련정보도 확인하고 싶은 욕구가 일어난다. 여기에서는 이와 관련된 코드를 간단히 개발할 수 있는 기본 코드를 작성해 보고자 한다. 이러한 스캔 행위는 공격으로 판단하여 법적 책임을 질 수 있다는 점을 먼저 얘기하면서 글을 쓰도록 하겠다. 서비스의 버전을 확인하는 것은 Foot-print라고 하는데, Foot-print는 소켓 상태의 연결 자체에 대한 정보 확인을 통한 서비스와 연결한 이후에 서비스에 보내주는 헤더 정보와 같은 응답 정보를 활용하는 방법이 있다. 소켓 상태의 정보는 서비스 타입정도 밖에 알 수 없지만, 헤더 정보와 같은 응답 받은 정보를 해석할 경우 보다 많은 정보를 확인 할 수 있게 된다. 서비스 확인하는 방법 먼저 서비스를 확인.. 2023. 3. 10.
Python - No module named 'mysql' Error 해결 sqlalchemy를 사용하고자 하는데, mysql 모듈이 없다고 한다. 이는 의존성 오류이기 때문에, mysql-conn ModuleNotFoundError: No module named 'mysql' Exception ignored in: Traceback (most recent call last): File "sitemap.py", line 54, in __del__ self.conn.close() pip install mysql-connector pip 명령에 문제가 있다면, pip3로 진행해보도록 하자. 2023. 3. 6.
FastAPI - Database 2개 연결시 database 작성 방안 FastAPI에서 여러 데이터 베이스를 접근하고자 한다면, 다음과 같이 database.py에 관리를 2개로 만들어 사용하는 것이 직관적으로 사용하기 유용하다. database.py from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker from config import conf from fastapi import FastAPI from fastapi.logger import logger import urllib.parse DATABASE_HOST = conf['db']['host'] DATABASE_PORT = conf['.. 2023. 3. 6.
Python - [Multinomial Naive Bayes 알고리즘 기반] 자연어 문장 학습을 통한 구분하기 sklearn를 이용한 학습한 문장에 따라 분류하는 코드인데 쉽게 이해할 수 있는 코드로 기록해 둔다. 사용 방식은 주석에 써있듯이 Multinomial Naive Bayes 알고리즘을 사용한다. import numpy as np from sklearn.feature_extraction.text import CountVectorizer from sklearn.naive_bayes import MultinomialNB from sklearn.pipeline import Pipeline # 학습 데이터 train_data = [ ('This is a positive sentence.', True), ('This is a negative sentence.', False), ('This sentence has .. 2023. 3. 3.
Python - Unix/Windows(epoch) timestamp를 datetime 으로 형식 변환 정말 시간 관련해서는 자주 사용해서 기록한다. 정말 간단한 코드 이지만, 기억하기 위해서 정리해 본다. Unix Time은 기본적으로 숫자로 이루어진 값을 의미한다. 해당 값은 특정 기간부터 발생한 초(Second)를 의미하는데 문제는 Windows와 Unix의 계산 방식이 다르다는 것이다. 따라서 숫자로 되어 있는 값이 어느 시스템에서 가져온 값인지에 따라서 적용 방식을 달리 해야 한다. Unix Time January 1st, 1970 at 00:00:00 UTC 가 시작 시간이다. 길이는 10자리이다. 10자리 이상인 경우 소수점을 찍어서 값을 계산하도록 하자. from datetime import datetime def convert_unix_time(unix_time): convert_time .. 2023. 3. 2.