From 27954e3a17f68557b12550e8cc303b62ac451717 Mon Sep 17 00:00:00 2001 From: MrWaradana Date: Wed, 4 Feb 2026 16:16:18 +0700 Subject: [PATCH] fix: Add standard Server-Sent Events headers to StreamingResponse for improved client compatibility. --- .../__pycache__/router.cpython-311.pyc | Bin 16275 -> 16557 bytes src/equipment/router.py | 18 ++++++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/equipment/__pycache__/router.cpython-311.pyc b/src/equipment/__pycache__/router.cpython-311.pyc index c9b1bbb8921c842c5f0d436faaed1654852bcb50..405e4faf8865659344231ca5c33a94ff47bf3724 100644 GIT binary patch delta 1171 zcmbu7U1$_n6vywK+1bS1>{hBQ#7uBqlQc2eO-u+#)ubhwV#Nkj+N26Q%g$^vF*~!| z-AG-c@gp`{#gO#2(TX+}#Sc;++M&=F`%-)mK@-`BFpml%f-<5aL`2WojT%bd9Js&p zKWEQ9JNJKw4_`e*{g-?`4}oW$|A>CQ=@0*DUyB>kBe0%+3m7G%bSt6cB+1bnNeC(( zDcvuqf-0&mRZ`t*$r)+C$Zz_Bfg$nt(u*P?)3A!q4pO(odhPqyH#{FO%y2vw@6#HB zpfW6Gq!T7f&U^M~S}GhH(D!O~iD9M(yT69Hqh!Hs zlAr~v>3^&i_&GUPF(mw-)!AL!2Mylfm#yb=k3_lE6?!FX?1izc51}La5d((6SB3&!b^!DVSZS3XudZ!(IzQ;t)}87qDjkM-|L~VJ59vXE|C0%6 z1o9hvsP-=8(Yj&jd&u+rUfnsG<0ETA(hrc|<0h@TKYBPJ0i0rv8KQ#Uj2$f;sJ-_#^s0J+j?T-!(Gajb3vy#1EWV_{*h)%+>_jX!R# zS-NNf{(hcUwbV$LKt`;tmRr<&8Kf;H)4gn**S3D+#vHniwyu_@L4IjnZJiW$pNK@L%G1@3fE~^ON`%tU6^B>kx@M`Ir?MkNa6*qmFfJzU OtbEtuDAud>lj0kDc}yb! delta 849 zcmaJ;T}V@582;X~b3`^LniaKn*lJ_BIj1cfSgBMal2Mboh$7ge%^b8^-zKs`##}Wm z?Z+=v#A-oMT|~u!C?p7?x=JVPLKbw1w~Hq>OGoNsiuO7}UfSGwK(U>wCNnrIixrp#htZTHLWy)eV7+iZ0e z7qCCeI@@egj#IM|X`2V#BTkE&X#5-=z6n&v+1I0g36k`|T35qIs=CFfzXqx5Px4>)VZTlY~wFi3O=~k6sd~>!O zEAf|x2-X5vQ~@W{7!aX4YZx|+_!q%g0HZ4G#0#fXg0T{DQ(m7?kN?|T61OciSn}4+ MLPM9TI6Kmszt%_OuK)l5 diff --git a/src/equipment/router.py b/src/equipment/router.py index b626dd8..37a52bd 100644 --- a/src/equipment/router.py +++ b/src/equipment/router.py @@ -128,7 +128,14 @@ async def simulate_equipment(db_session: DbSession, assetnum: str): combined = {'prediksi': prediksi, 'hasil_eac': hasil_eac} yield f"data: {json.dumps({'status':'done','message':f'Simulation for {assetnum} completed successfully','data':combined})}\n\n" - return StreamingResponse(event_generator(), media_type='text/event-stream') + headers = { + "Content-Type": "text/event-stream", + "Cache-Control": "no-cache, no-transform", + "Connection": "keep-alive", + "X-Content-Type-Options": "nosniff", + "Content-Encoding": "none" + } + return StreamingResponse(event_generator(), media_type='text/event-stream', headers=headers) @router.get("/simulate-all") @@ -171,7 +178,14 @@ async def simulate_all_equipment(db_session: DbSession): yield f"data: {json.dumps({'status':'done', 'message':f'All simulations completed. Success: {success_count}, Errors: {error_count}'})}\\n\\n" - return StreamingResponse(event_generator(), media_type='text/event-stream') + headers = { + "Content-Type": "text/event-stream", + "Cache-Control": "no-cache, no-transform", + "Connection": "keep-alive", + "X-Content-Type-Options": "nosniff", + "Content-Encoding": "none" + } + return StreamingResponse(event_generator(), media_type='text/event-stream', headers=headers) @router.get( "/count-remaining-life",