1
0
mirror of https://github.com/actix/examples synced 2024-12-05 03:01:55 +01:00
examples/other/data_factory/README.md
2022-02-02 15:13:08 +00:00

1.1 KiB

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.