Table of contents
Issue Point
로컬 windows 서버에서 WPS에 연결하여 기사를 수집해오는 파이프라인이 존재했었는데, 실제 서버에 접속하여 내부 스크립트를 확인해보니 파일이 없음.
ssh -t donga@10.60.16.85 "powershell.exe -NoExit"
Python
복사
때문에 donga-data-pipeline의 local-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