Nico Neumann

    Nico Neumann

    6 months ago
    Hi, I want to change the schedule of a Flow in my code. As an example I set
    flow.schedule = Schedule(clocks=[CronClock("* * * * *")])
    which works fine and later want to add another schedule or delete the current one. My idea is to use GraphQL with the
    set_flow_group_schedule
    and
    delete_flow_group_schedule
    methods.
    Kevin Kho

    Kevin Kho

    6 months ago
    Hey @Nico Neumann , could you move the graphql result to the thread when you get the chance so we don’t crowd the main channel? I think there is a distinction here between flow group schedule and flow schedule like you have hinted. The flow group schedule is the one defined in the UI and that does not go away as your re-register. The one defined by code is the flow schedule and goes away with re-registration. So we need to figure out how to delete the flow schedule instead of flow group
    Nico Neumann

    Nico Neumann

    6 months ago
    Now I first tried to query my schedule to see if it is registered correctly in Prefect Cloud
    query {
        flow {
          id
          name
          flow_group_id
          schedule
        }
    }
    And I can see it:
    ...
    "flow_group_id": "{flow_group_id}",
    "schedule": {
        "clocks": [
          {
            "cron": "* * * * *",
            "type": "CronClock",
            "day_or": true,
            "labels": null,
            "end_date": null,
            "start_date": null,
            "__version__": "1.1.0",
            "parameter_defaults": {}
          }
        ],
        "filters": [],
        "or_filters": [],
        "__version__": "1.1.0",
        "adjustments": [],
        "not_filters": []
      }
    },
    ...
    Now I want to delete the schedule using the
    flow_group_id
    and I get
    success=true
    back:
    mutation {
        delete_flow_group_schedule(input: {
          flow_group_id: "{flow_group_id}") {
            success
        }
    }
    But when I run the query again, my schedule is still there and running. I also checked it in the Prefect Cloud UI. It says I cannot delete it trough the UI because it was created through code. When I add a schedule through UI now for testing, I can delete it with the
    delete_flow_group_schedule
    command above. But I cannot delete the schedule created through the code.
    Kevin Kho

    Kevin Kho

    6 months ago
    Thank you for moving it!
    Nico Neumann

    Nico Neumann

    6 months ago
    @Kevin Kho thank you for your reply! I just saw in the query that both schedules are at different places in the query: The one created through code is at
    flow.schedule
    and the one created through the UI at
    flow.flow_group.schedule
    Kevin Kho

    Kevin Kho

    6 months ago
    Exactly yeah
    I think you need to do something like pulling the serialized version of the Flow, updating it, and then re-registering it. I don’t think there is an easy way to edit
    flow.schedule
    . Would using the
    flow_group
    schedule work for your use case? Could you tell me more?
    Nico Neumann

    Nico Neumann

    6 months ago
    My idea is to have a flow running at a specific time and later on I might want to change the schedule or delete it. I was not aware of the difference between the schedules. So instead I could just register the flow without a schedule and then use
    set_flow_group_schedule
    to set it? In this way I should then be able to delete it later with
    delete_flow_group_schedule
    ?
    Kevin Kho

    Kevin Kho

    6 months ago
    I guess that’s easier yep because modifying the Flow object with a schedule attached requires some form of re-registration I think
    Nico Neumann

    Nico Neumann

    6 months ago
    Thank you very much! Really great support here of everyone 😊
    Kevin Kho

    Kevin Kho

    6 months ago
    Thank you!