🧩 BE

D리포트 파이프라인 스케줄링 활성화

Assigned To
Date
2026/02/02
Status
Done
Type
Issue
Infra
Table of contents

Issue Point

로컬 windows 서버에서 WPS에 연결하여 기사를 수집해오는 파이프라인이 존재했었는데, 실제 서버에 접속하여 내부 스크립트를 확인해보니 파일이 없음.
ssh -t donga@10.60.16.85 "powershell.exe -NoExit"
Python
복사
때문에 donga-data-pipelinelocal-workers 자체가 활성화되어 있지 않아 동아닷컴 데이터를 아예 불러오지 못하고 있었음. 그래서 D리포트 데이터 수동 머지 이슈도 발생했던 것.

Detail

Solution

서버에 접속해서 /Scripts/ 내부에 git clone으로 donga-data-pipeline 코드 당겨옴.
이후 스케줄러 .ps1 파일 수동으로 실행시킴. (1시간에 1회)
# 1. 기존 작업 삭제 Unregister-ScheduledTask -TaskName "DongaCollector" -Confirm:$false -ErrorAction SilentlyContinue # 2. 경로 변수 설정 (경로 내 공백이 없다고 가정, 있다면 따옴표 주의) $TaskName = "DongaCollector" $WorkDir = "C:\Users\DONGA\Scripts\donga-data-pipeline\local-workers\scrape_all_today_donga_articles" $PythonPath = "$WorkDir\.venv\Scripts\python.exe" $ScriptFile = "$WorkDir\main.py" $LogFile = "$WorkDir\debug_scheduler.log" # 3. Action 정의 (핵심 변경: cmd를 통해 실행하고 로그를 파일로 뺍니다) # 명령어 형태: cmd /c "python main.py > log.txt 2>&1" # 이렇게 하면 에러가 나도 파일에 기록됩니다. $ArgumentStr = "/c `"$PythonPath $ScriptFile > $LogFile 2>&1`"" $Action = New-ScheduledTaskAction -Execute "cmd.exe" -Argument $ArgumentStr -WorkingDirectory $WorkDir # 4. Trigger 정의 (트리거 정의 시점으로부터 매일 1시간에 1회) $Trigger = New-ScheduledTaskTrigger -Once -At (Get-Date) -RepetitionInterval (New-TimeSpan -Hours 1) # 5. Settings 정의 $Settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -StartWhenAvailable -ExecutionTimeLimit (New-TimeSpan -Hours 2) # 6. ★ Principal 정의: SYSTEM 계정 사용 ★ # SYSTEM 계정은 로그인 세션 없이도 백그라운드에서 강력하게 실행됩니다. $Principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest # 7. 작업 등록 Register-ScheduledTask -Action $Action -Trigger $Trigger -Settings $Settings -Principal $Principal -TaskName $TaskName # --- 실행 테스트 --- Write-Host "SYSTEM 계정으로 등록 완료. 실행을 시도합니다..." Start-ScheduledTask -TaskName $TaskName Start-Sleep -Seconds 5 # 결과 확인 1: 스케줄러 상태 $Info = Get-ScheduledTaskInfo -TaskName $TaskName Write-Host "LastTaskResult: $($Info.LastTaskResult)" Write-Host "LastRunTime: $($Info.LastRunTime)" # 결과 확인 2: 로그 파일 생성 여부 if (Test-Path $LogFile) { Write-Host "`n[성공 신호] 로그 파일이 생성되었습니다. 내용 확인:" Get-Content $LogFile -Tail 10 } else { Write-Host "`n[경고] 로그 파일이 아직 생성되지 않았습니다. (권한 문제 혹은 실행 지연)" }
PowerShell
복사

data pipeline 적용

data