← Назад к вопросам

Какой инструмент можно использовать в Azure, чтобы поставить CRON?

1.7 Middle🔥 111 комментариев
#Облачные платформы

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Какой инструмент можно использовать в Azure, чтобы поставить CRON

В Azure есть несколько инструментов для планирования (CRON).

1. Azure Logic Apps (основной)

Самый простой и управляемый способ:

{
  "definition": {
    "triggers": {
      "Recurrence": {
        "type": "Recurrence",
        "recurrence": {
          "frequency": "Hour",
          "interval": 1,
          "schedule": {
            "minutes": [0]
          }
        }
      }
    },
    "actions": {
      "Execute_Pipeline": {
        "type": "ApiConnection",
        "inputs": {
          "host": {
            "connection": {
              "name": "@parameters('$connections')['azuredatafactory']['connectionId']"
            }
          },
          "method": "post",
          "path": "/subscriptions/@{encodeURIComponent(parameters('subscription'))}/resourcegroups/@{encodeURIComponent(parameters('resourceGroup'))}/providers/Microsoft.DataFactory/factories/@{encodeURIComponent(parameters('factoryName'))}/pipelines/@{encodeURIComponent(parameters('pipelineName'))}/createRun"
        }
      }
    }
  }
}

2. Azure Data Factory Triggers

Для автоматизации pipeline обработки данных:

{
  "name": "DailyTrigger",
  "properties": {
    "type": "ScheduleTrigger",
    "typeProperties": {
      "recurrence": {
        "frequency": "Day",
        "interval": 1,
        "startTime": "2024-01-01T10:00:00Z",
        "endTime": "2025-12-31T23:59:59Z"
      }
    },
    "pipelines": [
      {
        "pipelineReference": {
          "referenceName": "DataProcessingPipeline",
          "type": "PipelineReference"
        }
      }
    ]
  }
}

3. Azure Automation Runbooks

Для PowerShell/Python скриптов:

# PowerShell Runbook
param(
    [string]$ResourceGroup,
    [string]$VMName
)

# Подключаемся к Azure
Connect-AzAccount -Identity

# Выполняем задачу
Start-AzVM -ResourceGroupName $ResourceGroup -Name $VMName

Write-Output "VM started successfully"

Планирование:

# Python в Azure Automation
import azure.automation
from datetime import datetime, timedelta

# Schedule запускает runbook каждый день в 10:00
schedule = {
    "name": "DailyBackup",
    "frequency": "Day",
    "interval": 1,
    "start_time": datetime.utcnow() + timedelta(minutes=5)
}

4. Azure Functions с Timer Trigger

Для serverless обработки:

# Azure Functions with Timer Trigger
import azure.functions as func
from datetime import datetime

def main(mytimer: func.TimerRequest) -> None:
    utc_timestamp = datetime.utcnow().isoformat()
    
    if mytimer.past_due:
        logging.info('The timer is past due!')
    
    # Выполняем обработку данных
    process_data()
    
    logging.info(f'Python timer trigger function ran at {utc_timestamp}')

Конфигурация в function_app.json:

{
  "schedule": "0 0 10 * * *",
  "name": "TimerTrigger",
  "type": "timerTrigger",
  "direction": "in"
}

5. Azure Container Instances с Cron

Для контейнеризованных задач:

# YAML конфиг
apiVersion: '2019-12-01'
name: mycontainer
properties:
  containers:
  - name: myimage
    properties:
      image: myimage:latest
      resources:
        requests:
          cpu: 1.0
          memoryInGB: 1.5
  osType: Linux
  restartPolicy: OnFailure
  
# Запуск через контейнер с cron
0 10 * * * /bin/sh -c 'python /app/process.py'

6. Azure Kubernetes Service (AKS) с CronJob

Для микросервисов:

apiVersion: batch/v1
kind: CronJob
metadata:
  name: data-pipeline
spec:
  schedule: "0 10 * * *"  # Каждый день в 10:00
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: data-processor
            image: myregistry.azurecr.io/data-processor:latest
            command: ["python", "/app/main.py"]
          restartPolicy: OnFailure

7. Azure SQL Agent Jobs

Для SQL базы данных:

-- Создаём job
EXEC jobs.sp_add_job
    @job_name='DailyDataRefresh',
    @description='Refresh data every day at 10 AM'

-- Добавляем step
EXEC jobs.sp_add_jobstep
    @job_name='DailyDataRefresh',
    @step_name='RefreshData',
    @command='EXECUTE sp_RefreshAnalytics'

-- Расписание
EXEC jobs.sp_add_schedule
    @schedule_name='Daily10AM',
    @interval_type='DAY',
    @interval_count=1,
    @start_time='10:00:00'

Рекомендации по выбору

  • Logic Apps: простые workflow, интеграция сервисов
  • Data Factory: pipeline обработки данных
  • Functions: serverless, микротаски
  • Automation: PowerShell/Python скрипты
  • AKS/Container Instances: контейнеризованные приложения
  • SQL Agent: встроенное планирование для SQL Server

Чаще всего использую Logic Apps + Data Factory для надёжного и управляемого планирования.