Я перенес forecasts.py
файл из GitHub на свою виртуальную машину через Azure Pipelines. Если я запускаю скрипт из терминала виртуальной машины с python3 forecasts.py &
, все идет гладко, и скрипт продолжает работать в фоновом режиме. По какой-то причине я получаю следующее сообщение от Azure Pipelines, если попытаюсь запустить этот скрипт аналогичным образом:
The STDIO streams did not close within 10 seconds of the exit event from process '/bin/bash'. This may indicate a child process inherited the STDIO streams and has not yet exited.
Полные журналы отладки можно найти здесь
Основное содержание forecasts.py
следующее:
import schedule
import time
def job():
print("I'm working...")
schedule.every().minute.at(":00").do(job)
while True:
schedule.run_pending()
time.sleep(5)
Этот сценарий должен печатать "Я работаю ..." раз в минуту. Стоит ли начинать скрипт другим способом?
ИЗМЕНИТЬ
azure-pipelines.yml
может помочь решить эту проблему:
variables:
- name: system.debug
value: true
jobs:
- deployment: fmi_forecasts_deployment
displayName: fmi_forecasts
environment:
name: AnalyticsServices
resourceType: VirtualMachine
strategy:
rolling:
maxParallel: 2 #for percentages, mention as x%
preDeploy:
steps:
- download: current
- script: echo initialize, cleanup, backup, install certs
deploy:
steps:
- checkout: self
- script: sudo apt install python3-pip
displayName: 'Update pip'
- script: python3 -m pip install -r requirements.txt
displayName: 'Install requirements.txt modules'
- script: rsync -a $(Build.SourcesDirectory) /home/ubuntu/$(Build.Repository.Name)/
displayName: 'Sync files to $(Build.Repository.Name)'
- task: Bash@3
inputs:
targetType: 'inline'
script: python3 /home/ubuntu/$(Build.Repository.Name)/s/forecasts.py &
displayName: 'Start the script'
routeTraffic:
steps:
- script: echo routing traffic
postRouteTraffic:
steps:
- script: echo health check post-route traffic
on:
failure:
steps:
- script: echo Restore from backup! This is on failure
success:
steps:
- script: echo Notify! This is on success
ИЗМЕНИТЬ
Я отредактировал файл forecasts.py
, чтобы печатать "Спящий" ... каждые 5 секунд. И когда я выполню это с помощью nohup python -u /home/ubuntu/$(Build.Repository.Name)/s/forecasts.py &
, я получу следующие журналы. Итак, скрипт работает, но когда я смотрю на запущенные процессы в виртуальной машине, никаких запущенных процессов python нет. Я полагаю, сценарий умирает, когда конвейер заканчивается.
azure-pipelines.yml
, где можно найти информацию. - person pentti   schedule 20.08.2020