Skip to main content

MongoDB storage helpers for NFS (latest/snapshots)

Project description

db2-hj3415 README

db2-hj3415는 MongoDB 저장소 접근을 표준화한 라이브러리 패키지입니다.
NFS/Universe/Analysis/Prediction 데이터를 latest/snapshot 형태로 저장·조회할 수 있도록 공통 repo 함수를 제공합니다.

pyproject.toml 기준 정보:

  • 패키지명: db2-hj3415
  • 버전: 2.4.1
  • Python: >=3.11
  • 빌드 백엔드: flit_core
  • 의존성: pymongo, contracts-hj3415, pydantic, pydantic-settings

1. 프로젝트 기능 설명

이 패키지는 다음 기능을 제공합니다.

  • 비동기 Mongo 연결 래퍼: db2_hj3415.mongo.Mongo
  • 환경설정 로더: db2_hj3415.settings.Settings, get_settings()
  • 도메인별 저장소 함수:
    • db2_hj3415.nfs.repo
    • db2_hj3415.universe.repo
    • db2_hj3415.analysis.repo
    • db2_hj3415.prediction.repo
  • 계약 DTO(contracts-hj3415)와 DB 문서 간 매퍼

즉, 서비스 코드에서는 “Mongo 연결 + repo 호출”만으로 저장/조회 로직을 구현할 수 있습니다.

2. 프로젝트 구조 설명

db2-hj3415/
├─ pyproject.toml
└─ src/db2_hj3415/
   ├─ settings.py         # 환경변수 로딩(Settings)
   ├─ mongo.py            # AsyncMongoClient 래퍼
   ├─ common/             # 공통 타입/유틸
   ├─ nfs/                # NFS repo/mappers/domain
   ├─ universe/           # Universe repo/mappers/domain
   ├─ analysis/           # Analysis repo/mappers/domain
   ├─ prediction/         # Prediction repo/domain
   └─ dart/               # DART 관련 repo/mappers/domain

사용 흐름:

  1. get_settings()로 설정 로드
  2. Mongo(settings) 생성 후 get_db()
  3. 원하는 도메인 repo 함수 호출
  4. 종료 시 await mongo.close()

3. 다른 프로젝트에서 임포트해서 사용하는 예시

설치:

python -m pip install db2-hj3415

기본 연결 예시:

import asyncio

from db2_hj3415.mongo import Mongo
from db2_hj3415.settings import get_settings


async def main() -> None:
    mongo = Mongo(get_settings())
    try:
        db = mongo.get_db()
        print(await db.command({"ping": 1}))
    finally:
        await mongo.close()


asyncio.run(main())

NFS latest 조회 예시:

import asyncio

from db2_hj3415.mongo import Mongo
from db2_hj3415.nfs.repo import get_latest
from db2_hj3415.settings import get_settings


async def main() -> None:
    mongo = Mongo(get_settings())
    try:
        db = mongo.get_db()
        doc = await get_latest(db, endpoint="c101", code="005930")
        print(doc)
    finally:
        await mongo.close()


asyncio.run(main())

Universe 코드 목록 조회 예시:

import asyncio

from db2_hj3415.mongo import Mongo
from db2_hj3415.settings import get_settings
from db2_hj3415.universe.repo import list_latest_universe_codes


async def main() -> None:
    mongo = Mongo(get_settings())
    try:
        db = mongo.get_db()
        codes = await list_latest_universe_codes(db, universe="krx300")
        print(codes[:10])
    finally:
        await mongo.close()


asyncio.run(main())

4. 환경변수 설정 예시

db2_hj3415.settings.Settings는 기본적으로 현재 작업 디렉터리의 .env와 OS 환경변수를 읽습니다.

주요 환경변수:

  • MONGO_URI: MongoDB URI
  • DB_NAME: DB 이름
  • MONGO_CONNECT_TIMEOUT_MS: 연결 타임아웃(ms)
  • MONGO_SERVER_SELECTION_TIMEOUT_MS: 서버 선택 타임아웃(ms)
  • SNAPSHOT_TTL_DAYS: snapshot TTL 일수 (0 또는 None이면 TTL 비활성화)

예시:

MONGO_URI=mongodb://localhost:27017
DB_NAME=hj3415
MONGO_CONNECT_TIMEOUT_MS=5000
MONGO_SERVER_SELECTION_TIMEOUT_MS=5000
SNAPSHOT_TTL_DAYS=730

운영 팁:

  • 앱 시작 시 인덱스 보장 함수(ensure_indexes)를 한 번 실행하는 구성이 안전합니다.
  • 이 패키지는 비동기 API 중심이므로 asyncio.run(...) 또는 상위 async 컨텍스트에서 호출해야 합니다.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

db2_hj3415-2.4.4.tar.gz (16.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

db2_hj3415-2.4.4-py3-none-any.whl (23.4 kB view details)

Uploaded Python 3

File details

Details for the file db2_hj3415-2.4.4.tar.gz.

File metadata

  • Download URL: db2_hj3415-2.4.4.tar.gz
  • Upload date:
  • Size: 16.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.32.5

File hashes

Hashes for db2_hj3415-2.4.4.tar.gz
Algorithm Hash digest
SHA256 743d70a5966619ab57fc65555ffddd6e46b4a4601538500b0f0586e261d59702
MD5 a6c718255adb435cc32aaf6de1e4f643
BLAKE2b-256 c9b4d1b96fe3f1a7abb94a6c4494178a99846eadf66ba0c8d5dd641159eb6ab7

See more details on using hashes here.

File details

Details for the file db2_hj3415-2.4.4-py3-none-any.whl.

File metadata

  • Download URL: db2_hj3415-2.4.4-py3-none-any.whl
  • Upload date:
  • Size: 23.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.32.5

File hashes

Hashes for db2_hj3415-2.4.4-py3-none-any.whl
Algorithm Hash digest
SHA256 e65481eecc5753731cb8815600d6da8ae8edf8212fe50452acfad540312a7b95
MD5 566df6eb2bcd327cb9bb411f46fe1ced
BLAKE2b-256 6f58e118a370d3da917d0ee11497eda23f960fdb1bb6e2b2fbc1515bbccda721

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page