feat: Add scheduling capabilities for cloud connections

Aperta
#843 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
35/100
Tipo di issue
Funzionalità
Chiarezza
Abbastanza chiara
Stato di attività
Ferma
Stack tecnologico
python
Ambito
api, cloud

Direzione di ricerca

Inizia dai punti di ingresso CloudWorkspace.deploy_connection() e CloudConnection, quindi esamina PatchConnectionRequest e AirbyteAPIConnectionSchedule. Traccia i punti di ingresso degli strumenti MCP correlati e il comportamento esistente per l'aggiornamento delle connessioni prima di definire i confini dell'interfaccia pubblica. Il lavoro è completo quando creazione, recupero, aggiornamento, pianificazione manuale, validazione ed esempi cron documentati sono coperti in modo coerente.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

enhancement

Feature Request: Add Scheduling Capabilities for Cloud Connections

Requested by

@aaronsteers (AJ Steers)

Context

Currently, PyAirbyte's Cloud capabilities allow creating and managing connections, but there's no interface for setting or updating sync schedules. This feature request proposes adding scheduling capabilities that align with Airbyte's API primitives.

Proposed Interface

Based on investigation of the Airbyte API, the scheduling system uses:

  • schedule_type: Either CRON or MANUAL
  • cron_expression: A standard cron string when using CRON schedule type

This is compatible with a simple cron string interface. The proposed interface would:

  1. During Connection Creation (CloudWorkspace.deploy_connection()):

    • Add optional schedule parameter accepting either:
      • None (default): Manual sync only
      • A cron expression string (e.g., "0 */6 * * *" for every 6 hours)
    • Internally converts cron string to AirbyteAPIConnectionSchedule object
  2. For Existing Connections (CloudConnection class):

    • Add set_schedule(cron_expression: str | None) method
      • None sets schedule to MANUAL
      • String sets schedule to CRON with the provided expression
    • Add get_schedule() method returning current schedule info
    • These methods are non-destructive (unlike config updates)
  3. MCP Tools:

    • set_cloud_connection_schedule(connection_id, cron_expression) - marked as non-destructive
    • get_cloud_connection_schedule(connection_id) - read-only
Example Usage
import airbyte as ab
from airbyte import cloud

workspace = cloud.CloudWorkspace(...)

# Create connection with schedule
connection = workspace.deploy_connection(
    name="My Connection",
    source=source,
    destination=destination,
    schedule="0 */6 * * *",  # Every 6 hours
)

# Update schedule on existing connection
connection.set_schedule("0 0 * * *")  # Daily at midnight

# Disable automatic syncs
connection.set_schedule(None)  # Manual only

# View current schedule
schedule_info = connection.get_schedule()
print(f"Type: {schedule_info.schedule_type}")
print(f"Cron: {schedule_info.cron_expression}")
Implementation Notes
  • The Airbyte API already supports scheduling via AirbyteAPIConnectionSchedule in PatchConnectionRequest
  • Cron expressions should be validated before sending to API
  • Consider adding helper constants for common schedules (hourly, daily, weekly)
  • Documentation should include cron expression examples and link to cron syntax reference
Related PR

This feature request was created during work on airbytehq/PyAirbyte#841, where an initial update_schedule() method was removed to avoid exposing internal API models in the public interface.

Lingua principale
Python
Stelle
343
Fork
77
Merge medio
1g 4h
PR unite (30g)
54

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di airbytehq/PyAirbyte

Tutte le issue di airbytehq/PyAirbyte

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.