Skip to content

Parallel Requests

Arun Prakash edited this page Sep 21, 2025 · 4 revisions

⚡ Parallel Requests

wordpress_client offers a built‑in way to execute requests in parallel via ParallelWordpress.

What you get:

  • Parallel list/create/update/delete/retrieve helpers on any interface
  • Stable ordering by page index for batch operations
  • Simple utilities to merge results into a single iterable

To fetch first 30 pages in parallel:

 final responses = await client.parallel.list(
    interface: client.posts,
    requestBuilder: () {
        return List.generate(
            30,
            (index) => ParallelRequest(
                page: index + 1,
                request: ListPostRequest(
                    perPage: 15,
                    page: index + 1,
                ),
            ),
        );
    },
);

The response type is Iterable<ParallelIterableResult<Post>>, where each item contains the page and the results for that page.

🧩 Merge results

Need a single ordered sequence? Use the merge helper:

final merged = await client.parallel
    .list<Post, ListPostRequest>(
        interface: client.posts,
        requestBuilder: () => /* as above */,
    )
    .merge(); // Iterable<Post>

🛠 Other parallel helpers

  • Create: client.parallel.create<T, R>
  • Update: client.parallel.update<T, R>
  • Delete: client.parallel.delete<R> (returns ParallelResult<bool>)
  • Retrieve: client.parallel.retrieve<T, R>

All helpers accept optional transformers and exception handlers for fine‑grained control.

📈 Performance

This depends on your site and network. Parallel often halves end‑to‑end time versus sequential fetching for large page ranges.

Starting Parallel...
Parallel Time Taken: 3667 ms
Starting Sequential...
Sequential Time Taken: 7437 ms

Difference: 3770 ms (50.69%)

Tip: Converting to a single stream is also supported via parallel_wordpress/extensions/parallel_result_exts.dart.

Clone this wiki locally