본문 바로가기

프로젝트 일지32

6. Go를 이용한 스크래퍼 리팩토링하기 (2) - goquery, Goroutine, sync.WaitGroup 저번 글에서는 왜 Go를 이용해 코드를 리팩토링하게 되었는지 그 계기와 함께 리팩토링한 코드 중 '역 코드 스크래퍼'의 HandleRequest 함수에 대해서 살짝 알아보았다. 이번 포스트에서는 '역 코드 스크래퍼'의 핵심이 되는 스크래핑 파트에 대해서 알아보면서 거기에 쓰인 goqeury, goroutine, waitgoup에 대해서 설명하겠다. run 함수 run 함수는 Goroutine을 활용하여 스크래퍼(scrapeNavercode)를 병렬로 돌리고, 채널로 값을 받아온 후 원하는 형태로 값을 정리하는 역할을 수행하는 함수이다. func run(num int) { var baseURL string = "https://pts.map.naver.com/end-subway/ends/web/" // 20.. 2023. 8. 9.
5. Go를 이용한 스크래퍼 리팩토링하기 (1) - Introduction, 그런데 goquery, S3 Upload, Lambda 활용 코드를 곁들인 이 글에서는 go에서 goquery, lambda, s3 다루는 법을 자세하게 설명하지는 않습니다. 이 블로그에 다른 글을 통해 업로드 할 예정입니다. 그래도 제가 사용한 소스 코드 전체는 있으니 참고 가능합니다. 지난 번에 Python의 Multiprocessing 모듈을 활용하여 병렬처리를 하고, 해당 코드를 AWS Lambda에 올리려 했다가 대차게 실패했다는 글을 적었다. 해당 글은 아래에 https://kyumcoding.tistory.com/42 4. 파이썬 크롤링 코드에 Process, Pipe 적용하기 저번 시간에 AWS Lambda에서 Pool을 지원하지 않는다는 사실을 알게 되었다. (자세한 과정은 여기 참고) Process와 Pipe를 이용해서 코드를 다시 짜라는 말에 너무나 슬펐지만.. 2023. 8. 8.
MLflow - Tracking Servers 이제까지 로컬에 저장하는 방법만 살펴봤지만, 실제 개발에서는 tracking 결과물을 로컬에 저장하지는 않음 원격 저장소에 저장 -> MLflow의 tracking URI로 기록물을 가져와서 사용하는 방식 import mlflow mlflow.set_tracking_uri("file:///tmp/my_tracking") tracking_uri = mlflow.get_tracking_uri() print("Current tracking uri: {}".format(tracking_uri)) 로컬 (file:/my/local/dir) 데이터베이스 (+://:@:/) mysql, mssql, sqlite, postgresql 지원 HTTP 서버 (https://my-server:5000) Databricks .. 2023. 7. 23.
FastAPI: 데이터베이스 연결의 이해 본 글은 "FastAPI를 사용한 파이썬 웹 개발" 내용의 일부를 토대로 정리한 글입니다. SQL과 애플리케이션 코드를 연동하기 위해선 SQLModel 라이브러리를 설치해야 한다. SQLModel 라이브러리는 FastAPI 개발자가 만들었으며, pydantic과 SQLAlchemy를 기반으로 한다. 테이블 테이블은 데이터베이스에 저장된 데이터를 가지고 있는 객체. SQLModel을 사용해서 테이블을 생성하려면 테이블 모델 클래스를 먼저 정의해야 함. pydantic 모델처럼 테이블을 정의하지만, SQLModel의 서브 클래스로 정의해야 함. 클래스 정의는 table이란 설정 변수를 갖는데, 이를 통해 해당 클래스가 SQLModel 테이블이라는 것을 인식할 수 있음. 모델 클래스 안에 정의된 변수는 따로 .. 2023. 6. 23.