Shaun Cutts
09/14/2020, 1:23 PMvalue
as a property which loads and caches the object when called.
However, the first thing I thought of is that I should use an S3Result
. But this doesn’t seem to be the right sort of object, as it just takes a bucket, not a key. It seems more of a “result storage location” than a Result
to me. I’m wondering why it has an isa
relation to Result
. Maybe I’m not understanding the object hierarchy properly, and/or I should be trying to achieve my goal differently? [Update had overlooked that base Result
takes location
. Still S3Result
has no ability to load results on demand, except via read
, which takes a new location.]
A related question is how I should trigger an already-created flow, that lives on the prefect server, with a new runner? Client.create_flow_run
allows me to create a new run, but not a dictionary of initial states. It would seem that I am abusing flows a little… Perhaps I need to create initial tasks that take a serialized specification for where their “real” inputs live, that can be passed in parameters. Thinking about it, this seems more the intended way I should be doing things, but it also feels that I am duplicating what Prefect is doing somehow. Guidance on what the best practice should be would be greatly appreciated.Kyle Moon-Wright
09/14/2020, 7:58 PMcreate_flow_run
via a Client
or GraphQL API call as expected.Shaun Cutts
09/14/2020, 10:12 PM{value: …}
or {s3: {bucket: …, key: …}}
etc) Still it seems a shame to have to replicate some of the machinery that you’ve built into Result
and your caching apparatus. What is an output of one task is the input of another, so it would seem that, if you can configure outputs, you should also be able to configure inputs.
[Edit] … indeed, a related question is how to reconfigure outputs. I see you can get task state per task on the client, but is it possible to change the availability of results from one run to the next? Is this possible with the graphql interface? (I haven’t come across a reference document to it, yet….)