fix: rb8001 기존 패턴에 맞게 배당 귀족주 스케줄러 계획 수정 (subprocess → 내부 서비스 import)
This commit is contained in:
parent
beb12d70c2
commit
4f99788ad2
@ -30,19 +30,23 @@
|
||||
|
||||
## 구현 계획
|
||||
|
||||
### Phase 1: rb8001 스케줄러 작업 생성
|
||||
### Phase 1: rb8001 서비스 및 스케줄러 작업 생성
|
||||
|
||||
**작업 내용**:
|
||||
1. `rb8001/app/scheduler/jobs/dividend_collector.py` 생성
|
||||
- `_run_dividend_collector_with_logging()` 함수 구현
|
||||
- `subprocess.run()`으로 `collect_dividends.py --update-all` 실행
|
||||
1. `rb8001/app/services/dividend/dividend_collector_service.py` 생성
|
||||
- `collect_all_dividends()` async 함수 구현
|
||||
- `collect_dividends.py`의 메인 로직을 서비스로 이동하거나 import하여 사용
|
||||
- 로깅: 시작/완료/에러 기록
|
||||
2. `rb8001/app/scheduler/jobs/dividend_collector.py` 생성
|
||||
- `_run_dividend_collector_with_logging()` sync 래퍼 함수 구현
|
||||
- `asyncio.run()`으로 서비스 함수 실행 (기존 패턴과 동일)
|
||||
- 로깅: 시작/완료/에러 기록
|
||||
2. 스크립트 경로: `/home/admin/goosefarminvesting/backend/scripts/collect_dividends.py`
|
||||
|
||||
**예상 시간**: 30분
|
||||
**예상 시간**: 1시간
|
||||
|
||||
**파일 참조**:
|
||||
- `rb8001/app/scheduler/jobs/diary_generator.py`: 스케줄러 작업 예시
|
||||
- `rb8001/app/scheduler/jobs/diary_generator.py`: 스케줄러 작업 예시 (내부 모듈 import 패턴)
|
||||
- `rb8001/app/scheduler/jobs/companyx_news.py`: 서비스 import 패턴 참고
|
||||
- `rb8001/app/scheduler/db_loader.py`: `JOB_TYPE_MAP` 구조 확인
|
||||
|
||||
---
|
||||
@ -56,7 +60,12 @@
|
||||
- `cron_expression`: `'0 3 * * 0'` (매주 일요일 새벽 3시)
|
||||
- `enabled`: `true`
|
||||
2. `rb8001/app/scheduler/db_loader.py`의 `JOB_TYPE_MAP`에 매핑 추가
|
||||
- `'dividend_collector': 'app.scheduler.jobs.dividend_collector._run_dividend_collector_with_logging'`
|
||||
```python
|
||||
"dividend_collector": {
|
||||
"func": "_run_dividend_collector_with_logging",
|
||||
"module": "app.scheduler.jobs.dividend_collector"
|
||||
}
|
||||
```
|
||||
|
||||
**예상 시간**: 20분
|
||||
|
||||
@ -80,13 +89,17 @@
|
||||
```
|
||||
rb8001 스케줄러 (APScheduler)
|
||||
↓ (매주 일요일 새벽 3시)
|
||||
dividend_collector.py (subprocess.run)
|
||||
↓
|
||||
goosefarminvesting/backend/scripts/collect_dividends.py --update-all
|
||||
dividend_collector.py (_run_dividend_collector_with_logging)
|
||||
↓ (asyncio.run)
|
||||
dividend_collector_service.py (collect_all_dividends)
|
||||
↓
|
||||
Supabase (dividend_stocks, dividend_history, dividend_metrics)
|
||||
```
|
||||
|
||||
**기존 패턴 준수**:
|
||||
- `subprocess.run()` 대신 내부 모듈 import 사용 (`diary_generator.py`, `companyx_news.py` 참고)
|
||||
- `_run_*_with_logging()` sync 래퍼 → `asyncio.run()` → 내부 서비스 async 함수 실행
|
||||
|
||||
### 스케줄러 패턴
|
||||
|
||||
- `scheduled_jobs` 테이블에 스케줄 정의 저장
|
||||
@ -98,11 +111,12 @@ Supabase (dividend_stocks, dividend_history, dividend_metrics)
|
||||
|
||||
## 파일 참조
|
||||
|
||||
- `rb8001/app/scheduler/jobs/diary_generator.py`: 스케줄러 작업 예시
|
||||
- `rb8001/app/scheduler/db_loader.py`: `JOB_TYPE_MAP` 정의
|
||||
- `rb8001/app/scheduler/jobs/diary_generator.py`: 스케줄러 작업 예시 (내부 모듈 import 패턴)
|
||||
- `rb8001/app/scheduler/jobs/companyx_news.py`: 서비스 import 패턴 참고
|
||||
- `rb8001/app/scheduler/db_loader.py`: `JOB_TYPE_MAP` 정의 (딕셔너리 구조)
|
||||
- `rb8001/app/state/scheduler_repository.py`: `scheduled_jobs` 테이블 CRUD
|
||||
- `goosefarminvesting/backend/scripts/collect_dividends.py:609`: 수집 스크립트
|
||||
- `goosefarminvesting/DOCS/journey/troubleshooting/251110_dividend_aristocrats_full_collection.md:60`: 실행 시간 참고
|
||||
- `goosefarminvesting/backend/scripts/collect_dividends.py`: 수집 로직 참고 (서비스로 이동)
|
||||
- `DOCS/journey/troubleshooting/260102_db_scheduler_management.md`: 스케줄러 시스템 구조
|
||||
|
||||
---
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user