Skip to content

docs: FastStream start() and stop() skip the app lifespan - #703

Merged
lesnik512 merged 1 commit into
mainfrom
docs/faststream-lifespan-note
Oct 17, 2026
Merged

lesnik512 merged 1 commit into
mainfrom
docs/faststream-lifespan-note

Conversation

@lesnik512

Copy link
Copy Markdown
Member

Adds one sentence to the shared container recipe: stream.start() and stream.stop() do not run a FastStream(lifespan=...), so that setup and teardown belongs in the FastAPI lifespan.

Companion to modern-python/modern-di-faststream#81 (closes modern-python/modern-di-faststream#79).

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark

Details
Benchmark suite Current: 50f7ae6 Previous: 7456d6c Ratio
benchmarks/test_guard_by_type.py::test_g16_resolve_by_type 3388172.830566766 iter/sec (stddev: 1.2098560147515322e-8) 3323697.2702107136 iter/sec (stddev: 1.4504270028785487e-8) 0.98
benchmarks/test_guard_by_type.py::test_g17_resolve_by_type_large_registry 3294779.6884488785 iter/sec (stddev: 8.933684214275094e-9) 3226038.4141841386 iter/sec (stddev: 1.3974655449624617e-8) 0.98
benchmarks/test_guard_cold.py::test_g8_cold_first_resolve 15716.355143830273 iter/sec (stddev: 0.00005223722127156652) 16019.849450601301 iter/sec (stddev: 0.000053054544812190896) 1.02
benchmarks/test_guard_cold.py::test_g8b_cold_first_resolve_cached 12406.368607134586 iter/sec (stddev: 0.00016123826141810913) 12441.949845927027 iter/sec (stddev: 0.00015337335816655376) 1.00
benchmarks/test_guard_concurrency.py::test_g14_concurrent_cached_hit[1] 479.7019351469381 iter/sec (stddev: 0.00007689280184382644) 476.94475657373056 iter/sec (stddev: 0.00006508347038871093) 0.99
benchmarks/test_guard_concurrency.py::test_g14_concurrent_cached_hit[2] 467.7255358955434 iter/sec (stddev: 0.00004681880141909691) 468.924971803668 iter/sec (stddev: 0.000046229627659459584) 1.00
benchmarks/test_guard_concurrency.py::test_g14_concurrent_cached_hit[4] 444.43004803452794 iter/sec (stddev: 0.00006157878189081834) 444.37648067494655 iter/sec (stddev: 0.00005886321168643224) 1.00
benchmarks/test_guard_concurrency.py::test_g15_concurrent_first_resolve[1] 12891.847711190912 iter/sec (stddev: 0.00001064676723591259) 13665.147406063732 iter/sec (stddev: 0.000008231476887953006) 1.06
benchmarks/test_guard_concurrency.py::test_g15_concurrent_first_resolve[2] 6194.158691565598 iter/sec (stddev: 0.000042787213255700976) 6371.303986633847 iter/sec (stddev: 0.000021553706123039497) 1.03
benchmarks/test_guard_concurrency.py::test_g15_concurrent_first_resolve[4] 3342.709261401827 iter/sec (stddev: 0.00004624636071863842) 3318.9945393693974 iter/sec (stddev: 0.00003999841849875828) 0.99
benchmarks/test_guard_concurrency.py::test_g15b_concurrent_first_resolve_sibling_children[1] 9397.99719295386 iter/sec (stddev: 0.00001230311134221451) 9905.36251564279 iter/sec (stddev: 0.000011575834577918767) 1.05
benchmarks/test_guard_concurrency.py::test_g15b_concurrent_first_resolve_sibling_children[2] 4217.637696884542 iter/sec (stddev: 0.000022020625576800576) 4348.2810810055125 iter/sec (stddev: 0.00002211832201380325) 1.03
benchmarks/test_guard_concurrency.py::test_g15b_concurrent_first_resolve_sibling_children[4] 2022.7259326705098 iter/sec (stddev: 0.00003805035393877557) 2000.2505313792187 iter/sec (stddev: 0.00008285774971187968) 0.99
benchmarks/test_guard_concurrency.py::test_g15c_worker_pool_floor_control[1] 41106.82876887261 iter/sec (stddev: 0.000003214575453841225) 41330.99583549512 iter/sec (stddev: 0.000003873499345703779) 1.01
benchmarks/test_guard_concurrency.py::test_g15c_worker_pool_floor_control[2] 13954.366199113205 iter/sec (stddev: 0.00001616978243664053) 14061.892482311177 iter/sec (stddev: 0.000013772671416675832) 1.01
benchmarks/test_guard_concurrency.py::test_g15c_worker_pool_floor_control[4] 5858.354078833163 iter/sec (stddev: 0.000030997190265566216) 5788.381127281979 iter/sec (stddev: 0.00003399628274170918) 0.99
benchmarks/test_guard_lifecycle.py::test_g6_build_child_container 1574304.6404637278 iter/sec (stddev: 3.512214549062251e-8) 1575122.3909485864 iter/sec (stddev: 3.4704402093684504e-8) 1.00
benchmarks/test_guard_lifecycle.py::test_g6b_build_child_container_auto_scope 1684539.4902621268 iter/sec (stddev: 2.4345182141204388e-8) 1689979.2973309024 iter/sec (stddev: 1.9428046730471392e-8) 1.00
benchmarks/test_guard_lifecycle.py::test_g7_request_lifecycle_batch 3064.729501381864 iter/sec (stddev: 0.00003423348372877984) 2981.009255634862 iter/sec (stddev: 0.000051883403992967285) 0.97
benchmarks/test_guard_lifecycle.py::test_g7c_event_loop_floor_control 58102.980988713054 iter/sec (stddev: 0.000001892876641964574) 58032.70760750251 iter/sec (stddev: 0.0000018025908141163688) 1.00
benchmarks/test_guard_lifecycle.py::test_g7b_request_cycle_sync 413619.29206360405 iter/sec (stddev: 9.1662029445527e-8) 415011.6004047853 iter/sec (stddev: 1.604325624047383e-7) 1.00
benchmarks/test_guard_lifecycle.py::test_g13_teardown_at_scale 65364.02853957007 iter/sec (stddev: 0.0000016896414553346805) 65855.50531356853 iter/sec (stddev: 0.0000015184165359047058) 1.01
benchmarks/test_guard_lifecycle.py::test_g13b_teardown_at_scale_async_no_finalizers 589.7562341381054 iter/sec (stddev: 0.0009482720069051143) 603.147709224004 iter/sec (stddev: 0.0009744561087224008) 1.02
benchmarks/test_guard_resolve.py::test_g1_transient_resolve 2138472.396165491 iter/sec (stddev: 3.258166854193305e-8) 2140718.4122634907 iter/sec (stddev: 3.478005647652005e-8) 1.00
benchmarks/test_guard_resolve.py::test_g2_cached_resolve 3547121.9184677973 iter/sec (stddev: 1.840472510548735e-8) 3635664.663306794 iter/sec (stddev: 9.300857307228436e-9) 1.02
benchmarks/test_guard_resolve.py::test_g3_deep_chain 747495.0366817693 iter/sec (stddev: 8.304797649415922e-8) 787171.3426806552 iter/sec (stddev: 6.609525001035898e-8) 1.05
benchmarks/test_guard_resolve.py::test_g4_wide_resolve 480307.0391564589 iter/sec (stddev: 3.7212587351736566e-7) 471665.3413653207 iter/sec (stddev: 4.470578024152352e-7) 0.98
benchmarks/test_guard_resolve.py::test_g5_cross_scope 2000126.7080389021 iter/sec (stddev: 3.5555466956590226e-8) 1981488.930411999 iter/sec (stddev: 3.774182737359634e-8) 0.99
benchmarks/test_guard_resolve.py::test_g9_context_resolve 1404502.6177025472 iter/sec (stddev: 1.5268544164035146e-7) 1371093.42918413 iter/sec (stddev: 1.5339217065453201e-7) 0.98
benchmarks/test_guard_resolve.py::test_g12_override_active_resolve 829299.413661767 iter/sec (stddev: 6.102175077625164e-8) 826542.3238449597 iter/sec (stddev: 4.442373582851924e-8) 1.00
benchmarks/test_guard_resolve.py::test_g18_alias_hop 3532942.7123423656 iter/sec (stddev: 1.3527036000377415e-8) 3619237.011996698 iter/sec (stddev: 1.0192254149812508e-8) 1.02
benchmarks/test_guard_validate.py::test_g10_validate_deep_chain 30707.24590996009 iter/sec (stddev: 0.00023805411729841254) 31469.824262157814 iter/sec (stddev: 0.00021120165742163083) 1.02
benchmarks/test_guard_validate.py::test_g11_validate_wide 21136.031839175335 iter/sec (stddev: 0.0000238543281209728) 21338.86436696156 iter/sec (stddev: 0.00002455443921231866) 1.01

This comment was automatically generated by workflow using github-action-benchmark.

@lesnik512
lesnik512 merged commit 2b7e4be into main Oct 17, 2026
12 checks passed
@lesnik512
lesnik512 deleted the docs/faststream-lifespan-note branch October 17, 2026 13:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

setup_di cannot be used with a broker run without a FastStream app

1 participant