1
0
mirror of https://github.com/actix/examples synced 2024-11-23 22:41:07 +01:00
examples/data-factory
2022-03-06 00:43:10 +00:00
..
src standardize binary names 2022-02-18 02:22:58 +00:00
Cargo.toml update actix web to stable version 2022-02-25 21:08:53 +00:00
README.md format markdown 2022-03-06 00:43:10 +00:00

Usage:

This is an example demonstrating the construction of async state with App::data_factory

Reason:

Use of a data_factory would make sense in these situations:

  • When async state does not necessarily have to be shared between workers/threads.

  • When an async state would spawn tasks on actix-rt. If state was centralized there could be a possibility the tasks get an unbalanced distribution on the workers/threads (actix-rt would spawn tasks on local thread whenever it's called)

Requirement:

  • rustc 1.58 stable
  • redis server listen on 127.0.0.1:6379(or use REDIS_URL env argument when starting the example)

Endpoints:

  • use a work load generator(e.g wrk) to benchmark the end points:

      http://127.0.0.1:8080/pool   prebuilt shared redis pool
      http://127.0.0.1:8080/pool2  data_factory redis pool
    

Context:

The real world difference can be vary by the work you are doing but in general it's a good idea to spread your identical async tasks evenly between threads and have as little cross threads synchronization as possible.