1
0
mirror of https://github.com/actix/examples synced 2024-11-28 00:12:57 +01:00
examples/async_data_factory
2020-06-22 21:16:25 +08:00
..
src add example for App::data_factory 2020-06-22 21:16:25 +08:00
Cargo.toml add example for App::data_factory 2020-06-22 21:16:25 +08:00
README.md add example for App::data_factory 2020-06-22 21:16:25 +08:00

Usage:

This is an example on constructing async state with App::data_factory

Reason:

data_factory would make sense in these situations:

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

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

Requirement:

  • rustc 1.43 stable
  • redis server listen on 127.0.0.1:6379(or make change to const var REDIS_URL in main.rs)

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.