gRPC
https://grpc.io/docs/languages/python/quickstart/
https://grpc.io/docs/languages/python/basics/
1
python -m grpc_tools.protoc -I ../protos --python_out=. --grpc_python_out=. ../protos/crawling.proto
proto3
proto3
란, protocol buffer
의 축약어에 버전(3)을 붙인 단어이다. gRPC API를 정의하기 위해서는 proto3를 사용해야 한다. proto3는 다음의 특징을 갖고 있다.
프로토콜 버퍼는 데이터 구조 스키마와 프로그래밍 인터페이스를 정의할 수 있는 인터페이스 정의 언어(IDL)로서 언어 중립적일 뿐만 아니라 플랫폼 중립적이기도 합니다. 이 IDL은 바이너리 통신 형식과 텍스트 통신 형식을 모두 지원할 뿐만 아니라 플랫폼에 따라 여러 가지 다른 통신 프로토콜과 호환됩니다.
https://developers.google.com/protocol-buffers/docs/proto3
실행
서버
- 도커 빌드(첫 실행 시)
1
docker build --tag grpc-crawling .
- 도커 실행
1 2 3 4
docker run -it \ -v /$(pwd)/crawling:/home/crawling/ \ -p 50053:50053 \ grpc-crawling bash
- 실행
1
python server.py
클라이언트(터미널 하나 더 띄워서)
- 가상환경 설치(첫 실행 시)
1
python -m venv .env
- 가상환경 켜기
1
source .env/Scripts/activate
- 패키지 설치(첫 실행 시)
1
pip install -r config/requirements.txt
- 폴더 이동
1
cd crawling
- 실행
1
python client.py
Issue
도커 toolbox 버그
billiard.Manager.dict() 에 딕셔너리 벨류로 못 넣음. <class ‘billiard.managers.DictProxy’>
https://stackoverflow.com/questions/49210359/update-dictproxy-from-multiple-processes-does-not-work
python ORM
http://sanghun.xyz/2016/11/python에서-postgres-db-연결해서-쿼리-조회하기/
https://www.learndatasci.com/tutorials/using-databases-python-postgres-sqlalchemy-and-alembic/
데이터베이스
1
2
3
4
5
6
7
docker run -it \
-v /$(pwd)/config:/run/secrets \
-p 5432:5432 \
-e POSTGRES_DB=postgres \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD_FILE=/run/secrets/postgres-passwd \
postgres:12.2 bash
-
Previous
[Scrapy] xpath, css selector 안 먹는 현상 해결 - Dynamic content 크롤링 하기 -
Next
[Spring] Spring Boot 에서 gRPC로 크롤링 MS 호출하기 - IntelliJ 설치부터 스프링부트 개념과 도커를 통한 실행까지