Created
June 14, 2023 04:36
-
-
Save davidlhw/f6d9ef422e6aa2d547292e2a4a21b937 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
let s3List i = task { | |
return [| $"foo%d{i}"; $"bar{i}"; $"baz{i}" |] | |
} | |
let s3Download k = task { | |
return $"data%s{k}" | |
} | |
let inline flip f x y = f y x // from FSharpPlus | |
let foo() = async { | |
let! arrOfSetOfKeys = Async.Parallel <| seq { | |
for d = 20230501 to 20230503 do | |
yield async { | |
let! keysList = s3List d |> Async.AwaitTask | |
return Set.ofArray keysList | |
} | |
} | |
let allKeys = Set.unionMany arrOfSetOfKeys | |
let dlJobs = flip Seq.map allKeys <| fun k -> async { | |
let! data = s3Download k |> Async.AwaitTask | |
printfn $"data downloaded: %s{data}" | |
return k | |
} | |
let limitParallelism = 3 | |
return! Async.Parallel(dlJobs, limitParallelism) | |
} | |
let bar() = let f = foo() |> Async.RunSynchronously | |
printfn "%A" f | |
bar() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment