From 1d3bf853cadab29ef1b234619111451f86f89a2f Mon Sep 17 00:00:00 2001 From: Edward Zapata Date: Tue, 19 Mar 2024 11:53:55 -0400 Subject: [PATCH 1/3] updated login-gov.js + unlock-cert.js to point to correct web element (#3533) --- backend/cypress/support/login-gov.js | 2 +- backend/cypress/support/unlock-cert.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/cypress/support/login-gov.js b/backend/cypress/support/login-gov.js index 3f6fd0d49f..9dd158a23c 100644 --- a/backend/cypress/support/login-gov.js +++ b/backend/cypress/support/login-gov.js @@ -5,7 +5,7 @@ const LOGIN_TEST_OTP_SECRET = Cypress.env('LOGIN_TEST_OTP_SECRET'); export function testLoginGovLogin( email=LOGIN_TEST_EMAIL, password=LOGIN_TEST_PASSWORD, secret=LOGIN_TEST_OTP_SECRET) { - cy.get('a.usa-button.sign-in-button').click(); + cy.get('a.usa-link[href="/openid/login/"][role="button"]').click(); cy.get('button.usa-button.sign-in-button') .should('contain.text', 'Authenticate with Login.gov') .click(); diff --git a/backend/cypress/support/unlock-cert.js b/backend/cypress/support/unlock-cert.js index c0e614b8f0..c1373aae1b 100644 --- a/backend/cypress/support/unlock-cert.js +++ b/backend/cypress/support/unlock-cert.js @@ -6,7 +6,7 @@ export function testUnlock() { const reportId = url.split('/').pop(); cy.get('.usa-button').contains('Unlock').click(); cy.get('#continue').contains('Unlock submission').click(); - cy.get('img[alt="FAC.gov"]').should('exist').click(); + cy.get('#basic-logo').should('exist').click(); cy.url().should('match', /\/audit\//); cy.contains('td', `${reportId}`) .siblings() From 5240371e288863d04a01986584140f8a3f68e2e8 Mon Sep 17 00:00:00 2001 From: "Hassan D. M. Sambo" Date: Tue, 19 Mar 2024 15:05:28 -0400 Subject: [PATCH 2/3] Fix the length of the in-workbook validation custom error message associated to program name. (#3513) --- .../excel/xlsx/additional-eins-workbook.xlsx | Bin 225052 -> 225054 bytes .../excel/xlsx/additional-ueis-workbook.xlsx | Bin 225056 -> 225058 bytes .../xlsx/audit-findings-text-workbook.xlsx | Bin 263652 -> 263653 bytes .../xlsx/corrective-action-plan-workbook.xlsx | Bin 263654 -> 263656 bytes ...ederal-awards-audit-findings-workbook.xlsx | Bin 1125784 -> 1125782 bytes .../excel/xlsx/federal-awards-workbook.xlsx | Bin 1550173 -> 1550137 bytes .../excel/xlsx/notes-to-sefa-workbook.xlsx | Bin 263677 -> 263676 bytes .../xlsx/secondary-auditors-workbook.xlsx | Bin 294962 -> 294962 bytes .../excel/libs/SheetValidations.libsonnet | 5 ++--- 9 files changed, 2 insertions(+), 3 deletions(-) diff --git a/backend/schemas/output/excel/xlsx/additional-eins-workbook.xlsx b/backend/schemas/output/excel/xlsx/additional-eins-workbook.xlsx index 777f39fbcf17264239edd77098d763f1fa4b2ce6..5d6b5088b62ca81dfeb8e5ce29163c71663601b0 100644 GIT binary patch delta 6577 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 WIGhPXI-Q62rNT2k_9nA%oc{s%#H1ns delta 3889 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 delta 3600 zcmZWs4O|mP7SCqYDi$KG6)Qptt^M*NQdG{WtO`}C^nxuIv`VTyzri5Z#*ZW`r8Qcl zsakJsEu^T|T%{U4)K!73Eh2}A5hDbJu!H~+C~QIq$!_-JlD6l^-Tr?2X5PI2%)EK; z&CHt$A)yimlM366!29(qq) zIsMsv+|7G?dM`vsmo<*w|9nzXGJjkCL|OjE2d~F$_7IzD8-ve}uJ$VFrsZRIAISOv zxwAVc^Nne{C2`A6NGHu%F9M?b|J{8oI5GC~T zgFb-5kL2BL`*~1WTr_M%?&h3(*`Lp?wZhlm8XhK^m0XiNRDV0wykmvruPx`6g%C!u z-Zb!2R&?)(H-7qN!GYWvXz>KmfX}czdwHt*J~aHT{579-ROr%jl3Q>3)b5Ypf8j*> zk0+9=EGtJ|nbOfvSN)J`fS=?~pcniRwz;B6_LH1bPozIlh1bSZ*5;Kle? zkopkd^#C^-q|T)v)@a~0-a7!Fk9;%=7>$-5=AQ+SuMhJRM{dgSRbt1?8f4o{U<2q& zIDr&L12cfpNO1`8GJ*#KWB71WV8mFzu=o$*Q+h!YkwYPVDP#S!Yu+QR$D?o@K!rY& zCSCXT5#YIU;>yX9QR1~AW)+Gb1HZ76P5sa5UpP)utEKJ=s?fMs}2Gr zs7L@zeQpHn5Ouk2$l56XOcFTh57pSG>`GNGLV#%CEwD%M#S@w|2q!#Rvj8mlb6I>g z8)=L7J1F21fI^{{fu`XwRk4fdC>*dz>HBhw@;Y6(f+TA(Z>bDo`txP*F{a0*@{b`ieR;In=~^hj_8(-0@*dhIg2R9XQ-TotaQ$!Zx!Q~4O( zXT&JFN(wX1S{X)lAs98-OvJNlse*({A*NFYv!z;vO7384;ek?INJ(J&4(x4^;7Vti z7-uP+HlCsKwMweXg-DeyOPCh+bgN6C@&bajg-H!Mmb9S|?XBXRq_19};fx{!-DM~4 zYcV-hRV|B$eGpvE>Nu-Do^3awLd@HbLX1uy55uZB3RXIg%WH9^LfE9oFt&)MOEglt z-A_2WOr)Zmy`C5)+2;u}u$0Y+c?X+~Fr~+Di(8)|)#6x=5y!$iZKSN+$qlvENwfwM zSFVLZ%vj7ph;iuLi~BPfpZpU0u#hopARjGjxlf&x4#Ak=9Ismw z=691_40{^PT8Q-)()}BR*e>ZQF%;?ej?sxA&aKnKJ~2*v2eeqYmp&v>%{?knxf&pt zq6JcRuvgPUTW6`@hZ+y7)^d(Pxz@lq3+b*}!mvkrRf`#wT!R{GhRb>g6(`FhFe%qp z3+u7noKo8$Cz`#@G8N~e%wna}0&_z)k&2t_ZP4LN9jaBi;u!ct(QE=mDI>U^UJ*vR1(1qnN!Z)tG86YPxT;*=8|JrA7ovsT zRXVA{Suvf49bZD+5sVRHBx@$?M0gpc(-6b~&qKMi0(nQ}ES35_k3f60KDj>MGlz6R zB<+M1tO%OuQWX%$V5glhdc8R8>ogMuN-l;O>J`~U(cEvZ!CtFTHK4~G9P#UDXB?45 zGYHNO_^=uS>&^EpPR@%iFX{}%eO?FSP*GbqlQkM2jX$_-&_+6dR zKbG$^&f&32Y0*>HW_n^wV)-%wpEpcRrUEFL%0DnLJ1g$1*m)-%XGR+K#&8yNRHpD& z(<1)C+?S4Ze1B=v(wM26livKUMfv63`RU&dOJCe`T2*#0tpwl;(0YQu0zlDKAUZtO zkULd5_Z-=_>U2ha&6U)OarxVS+C6oa{eAb!iMRjJb8%#VBn8Op0kZM-#U5mV7>q_j zQou2wGIj+bP65M^y(wTgFa-fpz*yioq7{QvkTx+m9CX*MLH3IMfS<+S1itclBwGx= z7GQ$FpJa!h1ip732~7c`ke9?@D6lCok_b4B)~A3BfasTj!%@@wpwD0Z0341Cq=6Rn zTpB0@5I-G`xFlc;dQS2?FY!ay&I6nLcS$|}4YZWt-vp49oBRm0{U-kufXu(lPef1N z^0)r|s=x8GcK$*DnQr8tg4Zv#b&a?@*!_^>t|4MQ(O-mBC=Eb2T+@kNXW^>91cPLmmCs!G&C&b3nUwy&$tWU;xhd5WEs zw^3IKvxHo(@yJ@)q3(`8pIuGhEf79WHCI7(!~K1Iw&QAXn77mF^fcR{c`X>n^yx^W zIc%rF_N`db`K?^W_F7313bo?SSS@w~7g611a6C&7nJR6%IlJV(!9lClY1d=Ne403% zAR0-w(|F(QRT(1h!!51Y6}FdITUV3=Cf?ygkJgu+&( z&tdJuwU$aXyvx_mxCC;s7{ywZ@ubCOtF+mVh>SffYpoO#GMpW9I{G^qtbCUNYh|pA z$yFjGGAwun<0joDYH3D=_fB<{S*q}$a#0%2?zXfLa-&|Fq1?H>?uNo`>TRxW)}F2A z;7^#jXJ<%ZryptepX9gFT$^|J=$wKw%z#y3{Y2-c3JiyXntxyd~fzEWha6K1gM;|-+SZO^l-Fdr+ zkzAIuWvxuMW!lcH%!0#N;^ygNs<9>O)7mYE_x+mKkUBxIF3B{%_xgt&H^OpG3!{B^ zw<@T@=lN?2Zwy2a6*3%IG;WU_4Yyya5ueOD=396#v2N~r2`lmrSx;`cHn5_z{Lu9u z;pEkD+L}?w+05YdC9WxR-kZ1a-G`a~JU{A$juA|r5qTL{BiZ>JE=NOllme`Io=#pP~aI|?QdFfPRLe!7ZIVaj8*9bEX)hB;C zK09whwq2|f z6*96Ub-(Fg?hDj>OTky7*=HggovoW|&ZIo=UHWcz-|FTcloRhJE#CD>Re0m|C6zT9 zmm|ElLv3xHi`+4xm5W}aW)I|I%jSK0Fnt@csGSzJmuohSOkD8AxO;Io$}bkx#LU?G zLwaPzzFmWBa^gR#3G041gr6!Vn1l-J1=InzJr*yJ%W~{txE=Li&-KKsK^%D;W0b<5|;7GIFL}@B<3?Jl=%=0{!J) fUK$`xKOoq0qc@hA>&5XszlTpw&aV|7A-%U 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 diff --git a/backend/schemas/output/excel/xlsx/corrective-action-plan-workbook.xlsx b/backend/schemas/output/excel/xlsx/corrective-action-plan-workbook.xlsx index 51bfccc0025496e1cea0e1211567efb87650fe5e..e8192ccf66b334e7f845aa261bb33122a0143013 100644 GIT binary patch delta 6829 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 diff --git a/backend/schemas/output/excel/xlsx/federal-awards-workbook.xlsx b/backend/schemas/output/excel/xlsx/federal-awards-workbook.xlsx index b10d8d339dfa95a3134f2021018b88f1894dfdf3..6306a6d6abf63cba0a55e90c1369bc5b2faa3168 100644 GIT binary patch delta 14338 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 Um!C7>-nD5e%O+PRsenKJKcSfP{{R30 delta 14362 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 NXh>|>N)+DV{T&^%5f}gf delta 9972 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 q8g_q<$as~=*hJSax2FLjSNjiP9@ilZPz ztx8={5Mw1KVw50=(NY9O2oMOeh5*?!nQuZDt>3@D)BMw%llR`adG9>$^WHmmp4>B& zpKP0-Y&&e#G92FC%*@Qn?C0#Qr-t1ISg}5c`SXvo=1zF%a^axt^`~HspXy?l_9j;{u1V-8Z7KR?a`g` zNAXQZj>jhgW>WT9@=m)YbH~_CPnUXMyzEgbp9nf*Aj-mBnMiOzf#Z}o@1*d_t*nd?_yy|w(E;H+E3I{JB#e#eE1I9!T3UiU66ec7w-y!0(8_C2lQX3u}*so(?T zZ((x<%T&!!yJ+@u$Sk&J1dOhQ91G@I?bOcSAi7e$hpp+O4|%%S{YgN3p)w*yHnPS- zKguOw=+G%EUroP0dDnu1k@=gSi~X~%I8)E3ZEo<6@=K@!stt~@0w~4Y zvP{z%U{Z8$889JtBXwY^^b5G}GbsWt7_g=@0E@wN=oA4kDLVIktZ@+jy##PB&4=DY zaKHj+E@%ECXdwijTnLqdC)|?EYSS5DQuLBcU_$Oj>cAA~UzAy`?IB7PlIR3@?_6jT zu3CE%j`V~kz_Q`cF!-VeGzixr2!!7(fgItD9?%$ED8U1ET?Wm9pUj0U%(bijpZENq z;mD=X)U%TyYus%cOSpImH0`VhGz1sJc=&}g)WKQh3C* zji7Wo%^urylp#1iKl~nTz1Opmx+4SC#JC@4D2EY^ZjB8i!gj!`Jt4P2SNC<d?JA}#I1r)EyXAW80jigkNtI~ zp#x4pab()tOv)4PQ_~n=D&RkHvAd(mxEn*j7A6yA-iZ5@3w|?N(-~k=bjnj;LheTD z*!=tV(_ejH->jGjYiZ%FeK5lp(sQ2pK$Z|k;0FmHc%whG~`?wM%^%C5~$}s@B*6)%tY8of^*_1J#2@0h_qX zs9G&kYoc(U^zco8m%l~mARL9U{tI=CQ+(2`*0`$FPbz#Ybo>vAx{fgXAE)?IU}LBF zL)rq*1^3=^&7~tvWPquF|HK6*t;h zI{~9!#)R~Ry5?=Jh~dOeg%E7Z#~vEQ!F>(w!M1!xLg&B`>AJUE(-~k=^mW*%n2x)V zIxtcC$4IN*axsIg3V&5iQUfMMA0q{Sq`@TIjnsGktLf)75}|YmPPT*&a)Jj#R_3tt z5NHsvkj{O}HJt$_MW2hU0jA?_qz+7y{@=J-0smYzi&ZygLW)tLo*UR=wH^?%5~GkE zHLw#qP#r%YWRDr$yu6-`a{5B2nj;fnH&1NG)zt$UiPQdLx47NL=`+Dgvj3!3AqsqH zA~g4l%~!2p;b(iz?KTIEI@c8xN=Lfp-8Gp3CPg3V3QWk|NF7tJCQ5&XYuq=?k^N*beM-&|xE0R3?-q08OhH(Mp6O zplfL*qP-$M(yt@(kVs{R2*|gH(T+Bu#2^voF%?LLx3SlY&k!*c!}WR?ZIlrGnYxy0s=i9blvlM94bl!4m8q-pk7>fS6WcMFi$w>c2_8hsZDO+==m-FYNKZzYGo zS9d3nbizD;0GOUyz>wD_l#3a3LJf__H{|H`Sfu*in=C5YR77MdOO251j&_mVL83&H$CabX`U(o0rx7!vNW-i7bJE##^%5k_Ck$0) z-zM$bg0@IRBy>i?14DE6WB7LJst(G4{wFzjO z7?s5;gbG6>Qo$0Z6AXHGQR&tP)3?TEUo6>Y7QfpmkAfJy)fRZ2LraeArn7}e0-my7mPRkKM3 zb)mkymB8O8zDg#I@5x7mL=sw&n+H@Zv0mLvGzYiZa_5grqRAS$2MOa(}bCtuSjWQj?r4V7Wg`sq}8=Tyg$rVflkdtV-3-Cs`R zfyGA%5poBhOh6?ZG3w3NRPCprYB{n_J{~dLROOdq)2@TaM|xXjyV34Fa^_U*YQPf2 z5}}&Z==wZ4@)J+5M@AD+oeZP$_@0b(P0To+&E(S8<5uOXw=o_e&XCs5zD-wB{C z9KO~-EHF+)#wx-RW-kJU({<4;Btws;k_HlKBwfFTfn(}tXeBUT?SD))4mEK4+xiGV z&1)bTGSo0?_vxvotJuR#c4WK2TdA705cW04zBrC%E#Axgo9FYKziV&|5`9}u*x|g@ zh2ivi&AT-V3heXkC)30Wf16cf-C_531yz0l>3V<5@6{c1i-0(I<97UUXc=4_j?aT% zhvV&G8!CQ~IcS4lZN;a;*%Z95<*Y|HXLS-E!}2Zotg~D3(<~My6dp#d!f)1NeHzwd zeUd})7EnK&vI8%G(J1^N2!>aM;$J|&!QI>O0xRHD*MXg)8gAT-Ia^2IecN&GWuI|NpdI0I(PYRil&#Id_*tE)71Pc|GgMw#>JulpkZ?Kl>LN7yWOL;9Vhj zdya4mo-t@3(Hz6~*zkdV&o@Y&1NB3CB-(O6I*}ADcRx#tR=B@qmS{ya>d{%G=#Cxi zV0~38Z9IY9SJ8)EPtwYAun+CmtE>7rWLX3wk*@1)PatE9uzHU#kD-fCVZoXo`o;B+ z>sUbF&N{_U(qd2gT##!%a%BF#JYW!$Nlf(uw)g}Ny1EPP7_8X=edio80*>qGYNF}iA0Yc`h6%MFggTUIe14O*-x5e6&y6 z#UTRTCPiZvg-qh^*IcHeQMnX?p%0M|sN)N$sDw;@?@1;}b-A*>HemvI(cLE0bn6H? z097{%vPgc0AMV!kK@wV7%nEtT(Dh5uB%QP_fnD#<><5Ta({;>XXn6w^sX_{kAV%6W zSrjq=bVUzr7m*`G4F*Z7wwp{;DO-iDG=H8}UJDnDk6nn*l z*b<^iV9)OD4dKz(&~iu-O>z=Q>{GUM`+u(x)OrF{Z7Q~Ohl(_zW;4f4(8Ue!^ z6UbyS(u3SYwQV%R^aEg@&P6R1NU%&3IokG$R(EVHnSI!@{f>dC%h3cCjgR!`tKp3_ zy#02AR0qqnDq20-)-r*i*=kVtrqku+Ec9VB(n?*;7Wir%DN9BzCs7t{%w$SVJM91NM&Oy8 zO?i*sI;(v@-j7+rD7&$7@t(b%@7{5(?iC#0RUcE>b745m=jR}_+?%;}jZ-Y1q5v}RaivFN z#k_6zNNE*&R14df1q8y2p6olk_Gy(N{29;RoPJRI@Ey))j9?|&Pybz9Tn)gKLk zTQc{}KUHui@A&ECTBp7(W5;COy*K!)tYW(ftTFozy&w$U_n|a;InTLy$t1F?hI)uw zS?Y6+zOppWNi%mMVYroM#Uy@lb8sLN)RxlRG(VlR+}V(O+%dg-+Cg_SH}l2w%gkO| zyDGbb%gh?AUA5iQ6LC+7Pt>}lvm(vREF4p)?CH1w*C&p2$6yPy$mG>t<5ycGM<(y` znsVC8*}^eRGPn>2rA=7WbT0Jph@hcvwuI|DU3_ctSOvW@H2K+xN%FJ{<|iGafXlVt z>m1E7*C=hkXftEEG{t`4c&XIP*fY32!YT#p;C3}AJ^7gxRt6mXqx4W%1*N;%25%2z zy&7NYm}WQR%0R=^8D(b1AEw%;eRa|?(q$zx7lX8#v@6hW{X}QCr$HB1>E_{G7GXWw z!8=D>n%knLLyw%Io!u5Kxv<(IAS(To*VVIb7Pisp&!%f)6P58lVh#18C}+2lpbNLB z;|9vrVWC4^N*vSNG zO~ZN?2hp#2RN;e`yV_E&6u$$hLl!k14K4Yj;m@vjmJB$C2a665v{$bk?i~1^w$OR*W0w50jppuIXGK8v~V{9lY{Q>rbdpY?UJS*F;V2g~rPZub;cm*5Bxk zuSjK&JpDc0$KmDh&<_sb?rrVkoxb}%f5fXNRl!HV0fO?XkDn**b*FDrxM^gZ@-IJ73|)kg1M$E8oC&`Vd8eK(r;GVeu3uSe6W z?UW>S;mzqehwixi{GiF}r^{o~qW3Mm;B}(B{bKO7waSvrhU_ze9`mxMy?QRU7L{$N z+w=g0Y>iC<>_auUp}m zwRD$qdv6u*kw?PgA6lHNUthkFtD1O!bSUHD=8)L7tyHJUd+!~J9rIx5?`x%6)a)NC z7ANNi{5TvAlT|P;0WY;O>Z{5O%1!uIB7PQtY;9UD-FUEVIpbLRZhLFti5-^T`6Jyw z9lqka$Ew8of{%{L;}c%hJ@%;0cpE08%*^OIm&4yRyA7Yx;`HNrfN#)xo86YS_D% zlA3nQ+iOHL&k+wtl|0(9pk&Lm7)viN&YIk*f!?klTDo!j51Ceq&{C_fz4M>X2qoWh ze14*T_;Tq*-@E4*?^`)Ma^&G_lkN&${ya8p;qo~6>*7Ys;>M7k14mB$fES(HlDXFF zwvE^A@URKf4iv5$!C2U|zeD8W@|Dd2aULAs!QL(itr_<9&*-S_eeU;NI(&HwQR3M} zPobH?BU&310K7bJ-Lsdqb8y>&T>_7tNS`;Wvw>QW!k@7*z~PsT!_ww*GoN2BO)gy4 zF*N(yq`eDj-c+nV;d$rKiNW3mn_rut8P{107~JzoBL)lYHpEYTmK|QvvUc%9pLg2n z^Kw1sXUF9SW`DJ3ulwA0Ti0EBmFCSqf0TCc?D4kCz)~7iS0^ zzXE%R^Y3>!;7A7k8=FtZ121#HR~UHL&zZcu Date: Tue, 19 Mar 2024 19:25:02 -0500 Subject: [PATCH 3/3] Use async gunicorn workers (#3535) * use async gunicorn workers * lint * lint again * gevent, not eventlet * rm explicit greenlet dep * pin greenlet to >= 3.0rc3 * Revert to search.html from ec89a31c1640aa2f8a7d800a4237d30931456bec commit. * disable search csrf * psycogreen? * Linter appeasement. * Unrevert search page limitations (with this commit, web search is limited to just UEI/EIN). --------- Co-authored-by: Tadhg O'Higgins <2626258+tadhg-ohiggins@users.noreply.github.com> --- backend/dissemination/views.py | 6 + backend/gunicorn.conf.py | 9 ++ backend/requirements.txt | 221 ++++++++++++++++++--------- backend/requirements/requirements.in | 5 +- 4 files changed, 171 insertions(+), 70 deletions(-) diff --git a/backend/dissemination/views.py b/backend/dissemination/views.py index 2cf91daa30..573f64ce5a 100644 --- a/backend/dissemination/views.py +++ b/backend/dissemination/views.py @@ -9,6 +9,8 @@ from django.http import Http404 from django.shortcuts import get_object_or_404, redirect, render from django.utils import timezone +from django.utils.decorators import method_decorator +from django.views.decorators.csrf import csrf_exempt from django.views.generic import View from config.settings import STATE_ABBREVS, SUMMARY_REPORT_DOWNLOAD_LIMIT @@ -111,6 +113,10 @@ def run_search(form_data): class Search(View): + @method_decorator(csrf_exempt) + def dispatch(self, *args, **kwargs): + return super(Search, self).dispatch(*args, **kwargs) + def get(self, request, *args, **kwargs): """ When accessing the search page through get, return the blank search page. diff --git a/backend/gunicorn.conf.py b/backend/gunicorn.conf.py index 6aa128db91..f69494e636 100644 --- a/backend/gunicorn.conf.py +++ b/backend/gunicorn.conf.py @@ -1,4 +1,13 @@ +from psycogreen.gevent import patch_psycopg # use this if you use gevent workers + + +def post_fork(server, worker): + patch_psycopg() + worker.log.info("Made Psycopg2 Green") + + max_requests = 500 max_requests_jitter = 50 timeout = 120 workers = 4 +worker_class = "gevent" diff --git a/backend/requirements.txt b/backend/requirements.txt index 846e57c178..fc23bfa43c 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -307,75 +307,112 @@ furl==2.1.3 \ future==0.18.3 \ --hash=sha256:34a17436ed1e96697a86f9de3d15a3b0be01d8bc8de9c1dffd59fb8234ed5307 # via pyjwkest -greenlet==2.0.2 \ - --hash=sha256:03a8f4f3430c3b3ff8d10a2a86028c660355ab637cee9333d63d66b56f09d52a \ - --hash=sha256:0bf60faf0bc2468089bdc5edd10555bab6e85152191df713e2ab1fcc86382b5a \ - --hash=sha256:1087300cf9700bbf455b1b97e24db18f2f77b55302a68272c56209d5587c12d1 \ - --hash=sha256:18a7f18b82b52ee85322d7a7874e676f34ab319b9f8cce5de06067384aa8ff43 \ - --hash=sha256:18e98fb3de7dba1c0a852731c3070cf022d14f0d68b4c87a19cc1016f3bb8b33 \ - --hash=sha256:1a819eef4b0e0b96bb0d98d797bef17dc1b4a10e8d7446be32d1da33e095dbb8 \ - --hash=sha256:26fbfce90728d82bc9e6c38ea4d038cba20b7faf8a0ca53a9c07b67318d46088 \ - --hash=sha256:2780572ec463d44c1d3ae850239508dbeb9fed38e294c68d19a24d925d9223ca \ - --hash=sha256:283737e0da3f08bd637b5ad058507e578dd462db259f7f6e4c5c365ba4ee9343 \ - --hash=sha256:2d4686f195e32d36b4d7cf2d166857dbd0ee9f3d20ae349b6bf8afc8485b3645 \ - --hash=sha256:2dd11f291565a81d71dab10b7033395b7a3a5456e637cf997a6f33ebdf06f8db \ - --hash=sha256:30bcf80dda7f15ac77ba5af2b961bdd9dbc77fd4ac6105cee85b0d0a5fcf74df \ - --hash=sha256:32e5b64b148966d9cccc2c8d35a671409e45f195864560829f395a54226408d3 \ - --hash=sha256:36abbf031e1c0f79dd5d596bfaf8e921c41df2bdf54ee1eed921ce1f52999a86 \ - --hash=sha256:3a06ad5312349fec0ab944664b01d26f8d1f05009566339ac6f63f56589bc1a2 \ - --hash=sha256:3a51c9751078733d88e013587b108f1b7a1fb106d402fb390740f002b6f6551a \ - --hash=sha256:3c9b12575734155d0c09d6c3e10dbd81665d5c18e1a7c6597df72fd05990c8cf \ - --hash=sha256:3f6ea9bd35eb450837a3d80e77b517ea5bc56b4647f5502cd28de13675ee12f7 \ - --hash=sha256:4b58adb399c4d61d912c4c331984d60eb66565175cdf4a34792cd9600f21b394 \ - --hash=sha256:4d2e11331fc0c02b6e84b0d28ece3a36e0548ee1a1ce9ddde03752d9b79bba40 \ - --hash=sha256:5454276c07d27a740c5892f4907c86327b632127dd9abec42ee62e12427ff7e3 \ - --hash=sha256:561091a7be172ab497a3527602d467e2b3fbe75f9e783d8b8ce403fa414f71a6 \ - --hash=sha256:6c3acb79b0bfd4fe733dff8bc62695283b57949ebcca05ae5c129eb606ff2d74 \ - --hash=sha256:703f18f3fda276b9a916f0934d2fb6d989bf0b4fb5a64825260eb9bfd52d78f0 \ - --hash=sha256:7492e2b7bd7c9b9916388d9df23fa49d9b88ac0640db0a5b4ecc2b653bf451e3 \ - --hash=sha256:76ae285c8104046b3a7f06b42f29c7b73f77683df18c49ab5af7983994c2dd91 \ - --hash=sha256:7cafd1208fdbe93b67c7086876f061f660cfddc44f404279c1585bbf3cdc64c5 \ - --hash=sha256:7efde645ca1cc441d6dc4b48c0f7101e8d86b54c8530141b09fd31cef5149ec9 \ - --hash=sha256:8512a0c38cfd4e66a858ddd1b17705587900dd760c6003998e9472b77b56d417 \ - --hash=sha256:88d9ab96491d38a5ab7c56dd7a3cc37d83336ecc564e4e8816dbed12e5aaefc8 \ - --hash=sha256:8eab883b3b2a38cc1e050819ef06a7e6344d4a990d24d45bc6f2cf959045a45b \ - --hash=sha256:910841381caba4f744a44bf81bfd573c94e10b3045ee00de0cbf436fe50673a6 \ - --hash=sha256:9190f09060ea4debddd24665d6804b995a9c122ef5917ab26e1566dcc712ceeb \ - --hash=sha256:937e9020b514ceedb9c830c55d5c9872abc90f4b5862f89c0887033ae33c6f73 \ - --hash=sha256:94c817e84245513926588caf1152e3b559ff794d505555211ca041f032abbb6b \ - --hash=sha256:971ce5e14dc5e73715755d0ca2975ac88cfdaefcaab078a284fea6cfabf866df \ - --hash=sha256:9d14b83fab60d5e8abe587d51c75b252bcc21683f24699ada8fb275d7712f5a9 \ - --hash=sha256:9f35ec95538f50292f6d8f2c9c9f8a3c6540bbfec21c9e5b4b751e0a7c20864f \ - --hash=sha256:a1846f1b999e78e13837c93c778dcfc3365902cfb8d1bdb7dd73ead37059f0d0 \ - --hash=sha256:acd2162a36d3de67ee896c43effcd5ee3de247eb00354db411feb025aa319857 \ - --hash=sha256:b0ef99cdbe2b682b9ccbb964743a6aca37905fda5e0452e5ee239b1654d37f2a \ - --hash=sha256:b80f600eddddce72320dbbc8e3784d16bd3fb7b517e82476d8da921f27d4b249 \ - --hash=sha256:b864ba53912b6c3ab6bcb2beb19f19edd01a6bfcbdfe1f37ddd1778abfe75a30 \ - --hash=sha256:b9ec052b06a0524f0e35bd8790686a1da006bd911dd1ef7d50b77bfbad74e292 \ - --hash=sha256:ba2956617f1c42598a308a84c6cf021a90ff3862eddafd20c3333d50f0edb45b \ - --hash=sha256:bdfea8c661e80d3c1c99ad7c3ff74e6e87184895bbaca6ee8cc61209f8b9b85d \ - --hash=sha256:be4ed120b52ae4d974aa40215fcdfde9194d63541c7ded40ee12eb4dda57b76b \ - --hash=sha256:c4302695ad8027363e96311df24ee28978162cdcdd2006476c43970b384a244c \ - --hash=sha256:c48f54ef8e05f04d6eff74b8233f6063cb1ed960243eacc474ee73a2ea8573ca \ - --hash=sha256:c9c59a2120b55788e800d82dfa99b9e156ff8f2227f07c5e3012a45a399620b7 \ - --hash=sha256:cd021c754b162c0fb55ad5d6b9d960db667faad0fa2ff25bb6e1301b0b6e6a75 \ - --hash=sha256:d27ec7509b9c18b6d73f2f5ede2622441de812e7b1a80bbd446cb0633bd3d5ae \ - --hash=sha256:d4606a527e30548153be1a9f155f4e283d109ffba663a15856089fb55f933e47 \ - --hash=sha256:d5508f0b173e6aa47273bdc0a0b5ba055b59662ba7c7ee5119528f466585526b \ - --hash=sha256:d75209eed723105f9596807495d58d10b3470fa6732dd6756595e89925ce2470 \ - --hash=sha256:d967650d3f56af314b72df7089d96cda1083a7fc2da05b375d2bc48c82ab3f3c \ - --hash=sha256:db1a39669102a1d8d12b57de2bb7e2ec9066a6f2b3da35ae511ff93b01b5d564 \ - --hash=sha256:dbfcfc0218093a19c252ca8eb9aee3d29cfdcb586df21049b9d777fd32c14fd9 \ - --hash=sha256:e0f72c9ddb8cd28532185f54cc1453f2c16fb417a08b53a855c4e6a418edd099 \ - --hash=sha256:e7c8dc13af7db097bed64a051d2dd49e9f0af495c26995c00a9ee842690d34c0 \ - --hash=sha256:ea9872c80c132f4663822dd2a08d404073a5a9b5ba6155bea72fb2a79d1093b5 \ - --hash=sha256:eff4eb9b7eb3e4d0cae3d28c283dc16d9bed6b193c2e1ace3ed86ce48ea8df19 \ - --hash=sha256:f82d4d717d8ef19188687aa32b8363e96062911e63ba22a0cff7802a8e58e5f1 \ - --hash=sha256:fc3a569657468b6f3fb60587e48356fe512c1754ca05a564f11366ac9e306526 +gevent==24.2.1 \ + --hash=sha256:03aa5879acd6b7076f6a2a307410fb1e0d288b84b03cdfd8c74db8b4bc882fc5 \ + --hash=sha256:117e5837bc74a1673605fb53f8bfe22feb6e5afa411f524c835b2ddf768db0de \ + --hash=sha256:141a2b24ad14f7b9576965c0c84927fc85f824a9bb19f6ec1e61e845d87c9cd8 \ + --hash=sha256:14532a67f7cb29fb055a0e9b39f16b88ed22c66b96641df8c04bdc38c26b9ea5 \ + --hash=sha256:1dffb395e500613e0452b9503153f8f7ba587c67dd4a85fc7cd7aa7430cb02cc \ + --hash=sha256:2955eea9c44c842c626feebf4459c42ce168685aa99594e049d03bedf53c2800 \ + --hash=sha256:2ae3a25ecce0a5b0cd0808ab716bfca180230112bb4bc89b46ae0061d62d4afe \ + --hash=sha256:2e9ac06f225b696cdedbb22f9e805e2dd87bf82e8fa5e17756f94e88a9d37cf7 \ + --hash=sha256:368a277bd9278ddb0fde308e6a43f544222d76ed0c4166e0d9f6b036586819d9 \ + --hash=sha256:3adfb96637f44010be8abd1b5e73b5070f851b817a0b182e601202f20fa06533 \ + --hash=sha256:3d5325ccfadfd3dcf72ff88a92fb8fc0b56cacc7225f0f4b6dcf186c1a6eeabc \ + --hash=sha256:432fc76f680acf7cf188c2ee0f5d3ab73b63c1f03114c7cd8a34cebbe5aa2056 \ + --hash=sha256:44098038d5e2749b0784aabb27f1fcbb3f43edebedf64d0af0d26955611be8d6 \ + --hash=sha256:5a1df555431f5cd5cc189a6ee3544d24f8c52f2529134685f1e878c4972ab026 \ + --hash=sha256:6c47ae7d1174617b3509f5d884935e788f325eb8f1a7efc95d295c68d83cce40 \ + --hash=sha256:6f947a9abc1a129858391b3d9334c45041c08a0f23d14333d5b844b6e5c17a07 \ + --hash=sha256:782a771424fe74bc7e75c228a1da671578c2ba4ddb2ca09b8f959abdf787331e \ + --hash=sha256:7899a38d0ae7e817e99adb217f586d0a4620e315e4de577444ebeeed2c5729be \ + --hash=sha256:7b00f8c9065de3ad226f7979154a7b27f3b9151c8055c162332369262fc025d8 \ + --hash=sha256:8f4b8e777d39013595a7740b4463e61b1cfe5f462f1b609b28fbc1e4c4ff01e5 \ + --hash=sha256:90cbac1ec05b305a1b90ede61ef73126afdeb5a804ae04480d6da12c56378df1 \ + --hash=sha256:918cdf8751b24986f915d743225ad6b702f83e1106e08a63b736e3a4c6ead789 \ + --hash=sha256:9202f22ef811053077d01f43cc02b4aaf4472792f9fd0f5081b0b05c926cca19 \ + --hash=sha256:94138682e68ec197db42ad7442d3cf9b328069c3ad8e4e5022e6b5cd3e7ffae5 \ + --hash=sha256:968581d1717bbcf170758580f5f97a2925854943c45a19be4d47299507db2eb7 \ + --hash=sha256:9d8d0642c63d453179058abc4143e30718b19a85cbf58c2744c9a63f06a1d388 \ + --hash=sha256:a7ceb59986456ce851160867ce4929edaffbd2f069ae25717150199f8e1548b8 \ + --hash=sha256:b9913c45d1be52d7a5db0c63977eebb51f68a2d5e6fd922d1d9b5e5fd758cc98 \ + --hash=sha256:bde283313daf0b34a8d1bab30325f5cb0f4e11b5869dbe5bc61f8fe09a8f66f3 \ + --hash=sha256:bf5b9c72b884c6f0c4ed26ef204ee1f768b9437330422492c319470954bc4cc7 \ + --hash=sha256:ca80b121bbec76d7794fcb45e65a7eca660a76cc1a104ed439cdbd7df5f0b060 \ + --hash=sha256:cdf66977a976d6a3cfb006afdf825d1482f84f7b81179db33941f2fc9673bb1d \ + --hash=sha256:d4faf846ed132fd7ebfbbf4fde588a62d21faa0faa06e6f468b7faa6f436b661 \ + --hash=sha256:d7f87c2c02e03d99b95cfa6f7a776409083a9e4d468912e18c7680437b29222c \ + --hash=sha256:dd23df885318391856415e20acfd51a985cba6919f0be78ed89f5db9ff3a31cb \ + --hash=sha256:f5de3c676e57177b38857f6e3cdfbe8f38d1cd754b63200c0615eaa31f514b4f \ + --hash=sha256:f5e8e8d60e18d5f7fd49983f0c4696deeddaf6e608fbab33397671e2fcc6cc91 \ + --hash=sha256:f7cac622e11b4253ac4536a654fe221249065d9a69feb6cdcd4d9af3503602e0 \ + --hash=sha256:f8a04cf0c5b7139bc6368b461257d4a757ea2fe89b3773e494d235b7dd51119f \ + --hash=sha256:f8bb35ce57a63c9a6896c71a285818a3922d8ca05d150fd1fe49a7f57287b836 \ + --hash=sha256:fbfdce91239fe306772faab57597186710d5699213f4df099d1612da7320d682 + # via gunicorn +greenlet==3.0.3 \ + --hash=sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67 \ + --hash=sha256:0448abc479fab28b00cb472d278828b3ccca164531daab4e970a0458786055d6 \ + --hash=sha256:086152f8fbc5955df88382e8a75984e2bb1c892ad2e3c80a2508954e52295257 \ + --hash=sha256:098d86f528c855ead3479afe84b49242e174ed262456c342d70fc7f972bc13c4 \ + --hash=sha256:149e94a2dd82d19838fe4b2259f1b6b9957d5ba1b25640d2380bea9c5df37676 \ + --hash=sha256:1551a8195c0d4a68fac7a4325efac0d541b48def35feb49d803674ac32582f61 \ + --hash=sha256:15d79dd26056573940fcb8c7413d84118086f2ec1a8acdfa854631084393efcc \ + --hash=sha256:1996cb9306c8595335bb157d133daf5cf9f693ef413e7673cb07e3e5871379ca \ + --hash=sha256:1a7191e42732df52cb5f39d3527217e7ab73cae2cb3694d241e18f53d84ea9a7 \ + --hash=sha256:1ea188d4f49089fc6fb283845ab18a2518d279c7cd9da1065d7a84e991748728 \ + --hash=sha256:1f672519db1796ca0d8753f9e78ec02355e862d0998193038c7073045899f305 \ + --hash=sha256:2516a9957eed41dd8f1ec0c604f1cdc86758b587d964668b5b196a9db5bfcde6 \ + --hash=sha256:2797aa5aedac23af156bbb5a6aa2cd3427ada2972c828244eb7d1b9255846379 \ + --hash=sha256:2dd6e660effd852586b6a8478a1d244b8dc90ab5b1321751d2ea15deb49ed414 \ + --hash=sha256:3ddc0f794e6ad661e321caa8d2f0a55ce01213c74722587256fb6566049a8b04 \ + --hash=sha256:3ed7fb269f15dc662787f4119ec300ad0702fa1b19d2135a37c2c4de6fadfd4a \ + --hash=sha256:419b386f84949bf0e7c73e6032e3457b82a787c1ab4a0e43732898a761cc9dbf \ + --hash=sha256:43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491 \ + --hash=sha256:52f59dd9c96ad2fc0d5724107444f76eb20aaccb675bf825df6435acb7703559 \ + --hash=sha256:57e8974f23e47dac22b83436bdcf23080ade568ce77df33159e019d161ce1d1e \ + --hash=sha256:5b51e85cb5ceda94e79d019ed36b35386e8c37d22f07d6a751cb659b180d5274 \ + --hash=sha256:649dde7de1a5eceb258f9cb00bdf50e978c9db1b996964cd80703614c86495eb \ + --hash=sha256:64d7675ad83578e3fc149b617a444fab8efdafc9385471f868eb5ff83e446b8b \ + --hash=sha256:68834da854554926fbedd38c76e60c4a2e3198c6fbed520b106a8986445caaf9 \ + --hash=sha256:6b66c9c1e7ccabad3a7d037b2bcb740122a7b17a53734b7d72a344ce39882a1b \ + --hash=sha256:70fb482fdf2c707765ab5f0b6655e9cfcf3780d8d87355a063547b41177599be \ + --hash=sha256:7170375bcc99f1a2fbd9c306f5be8764eaf3ac6b5cb968862cad4c7057756506 \ + --hash=sha256:73a411ef564e0e097dbe7e866bb2dda0f027e072b04da387282b02c308807405 \ + --hash=sha256:77457465d89b8263bca14759d7c1684df840b6811b2499838cc5b040a8b5b113 \ + --hash=sha256:7f362975f2d179f9e26928c5b517524e89dd48530a0202570d55ad6ca5d8a56f \ + --hash=sha256:81bb9c6d52e8321f09c3d165b2a78c680506d9af285bfccbad9fb7ad5a5da3e5 \ + --hash=sha256:881b7db1ebff4ba09aaaeae6aa491daeb226c8150fc20e836ad00041bcb11230 \ + --hash=sha256:894393ce10ceac937e56ec00bb71c4c2f8209ad516e96033e4b3b1de270e200d \ + --hash=sha256:99bf650dc5d69546e076f413a87481ee1d2d09aaaaaca058c9251b6d8c14783f \ + --hash=sha256:9da2bd29ed9e4f15955dd1595ad7bc9320308a3b766ef7f837e23ad4b4aac31a \ + --hash=sha256:afaff6cf5200befd5cec055b07d1c0a5a06c040fe5ad148abcd11ba6ab9b114e \ + --hash=sha256:b1b5667cced97081bf57b8fa1d6bfca67814b0afd38208d52538316e9422fc61 \ + --hash=sha256:b37eef18ea55f2ffd8f00ff8fe7c8d3818abd3e25fb73fae2ca3b672e333a7a6 \ + --hash=sha256:b542be2440edc2d48547b5923c408cbe0fc94afb9f18741faa6ae970dbcb9b6d \ + --hash=sha256:b7dcbe92cc99f08c8dd11f930de4d99ef756c3591a5377d1d9cd7dd5e896da71 \ + --hash=sha256:b7f009caad047246ed379e1c4dbcb8b020f0a390667ea74d2387be2998f58a22 \ + --hash=sha256:bba5387a6975598857d86de9eac14210a49d554a77eb8261cc68b7d082f78ce2 \ + --hash=sha256:c5e1536de2aad7bf62e27baf79225d0d64360d4168cf2e6becb91baf1ed074f3 \ + --hash=sha256:c5ee858cfe08f34712f548c3c363e807e7186f03ad7a5039ebadb29e8c6be067 \ + --hash=sha256:c9db1c18f0eaad2f804728c67d6c610778456e3e1cc4ab4bbd5eeb8e6053c6fc \ + --hash=sha256:d353cadd6083fdb056bb46ed07e4340b0869c305c8ca54ef9da3421acbdf6881 \ + --hash=sha256:d46677c85c5ba00a9cb6f7a00b2bfa6f812192d2c9f7d9c4f6a55b60216712f3 \ + --hash=sha256:d4d1ac74f5c0c0524e4a24335350edad7e5f03b9532da7ea4d3c54d527784f2e \ + --hash=sha256:d73a9fe764d77f87f8ec26a0c85144d6a951a6c438dfe50487df5595c6373eac \ + --hash=sha256:da70d4d51c8b306bb7a031d5cff6cc25ad253affe89b70352af5f1cb68e74b53 \ + --hash=sha256:daf3cb43b7cf2ba96d614252ce1684c1bccee6b2183a01328c98d36fcd7d5cb0 \ + --hash=sha256:dca1e2f3ca00b84a396bc1bce13dd21f680f035314d2379c4160c98153b2059b \ + --hash=sha256:dd4f49ae60e10adbc94b45c0b5e6a179acc1736cf7a90160b404076ee283cf83 \ + --hash=sha256:e1f145462f1fa6e4a4ae3c0f782e580ce44d57c8f2c7aae1b6fa88c0b2efdb41 \ + --hash=sha256:e3391d1e16e2a5a1507d83e4a8b100f4ee626e8eca43cf2cadb543de69827c4c \ + --hash=sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf \ + --hash=sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da \ + --hash=sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33 # via # -r ./requirements/requirements.in - # sqlalchemy -gunicorn==21.2.0 \ + # gevent +gunicorn[gevent]==21.2.0 \ --hash=sha256:3213aa5e8c24949e792bcacfc176fef362e7aac80b76c56f6b5122bf350722f0 \ --hash=sha256:88ec8bff1d634f98e61b9f65bc4bf3cd918a90806c6f5c48bc5603849ec81033 # via -r ./requirements/requirements.in @@ -596,6 +633,9 @@ ply==3.11 \ --hash=sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3 \ --hash=sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce # via jsonpath-ng +psycogreen==1.0.2 \ + --hash=sha256:c429845a8a49cf2f76b71265008760bcd7c7c77d80b806db4dc81116dbcd130d + # via -r ./requirements/requirements.in psycopg2-binary==2.9.9 \ --hash=sha256:03ef7df18daf2c4c07e2695e8cfd5ee7f748a1d54d802330985a78d2a5a6dca9 \ --hash=sha256:0a602ea5aff39bb9fac6308e9c9d82b9a35c2bf288e184a816002c9fae930b77 \ @@ -1173,9 +1213,54 @@ urllib3==2.0.7 \ # -r ./requirements/requirements.in # botocore # requests +zope-event==5.0 \ + --hash=sha256:2832e95014f4db26c47a13fdaef84cef2f4df37e66b59d8f1f4a8f319a632c26 \ + --hash=sha256:bac440d8d9891b4068e2b5a2c5e2c9765a9df762944bda6955f96bb9b91e67cd + # via gevent +zope-interface==6.2 \ + --hash=sha256:02adbab560683c4eca3789cc0ac487dcc5f5a81cc48695ec247f00803cafe2fe \ + --hash=sha256:14e02a6fc1772b458ebb6be1c276528b362041217b9ca37e52ecea2cbdce9fac \ + --hash=sha256:25e0af9663eeac6b61b231b43c52293c2cb7f0c232d914bdcbfd3e3bd5c182ad \ + --hash=sha256:2606955a06c6852a6cff4abeca38346ed01e83f11e960caa9a821b3626a4467b \ + --hash=sha256:396f5c94654301819a7f3a702c5830f0ea7468d7b154d124ceac823e2419d000 \ + --hash=sha256:3b240883fb43160574f8f738e6d09ddbdbf8fa3e8cea051603d9edfd947d9328 \ + --hash=sha256:3b6c62813c63c543a06394a636978b22dffa8c5410affc9331ce6cdb5bfa8565 \ + --hash=sha256:4ae9793f114cee5c464cc0b821ae4d36e1eba961542c6086f391a61aee167b6f \ + --hash=sha256:4bce517b85f5debe07b186fc7102b332676760f2e0c92b7185dd49c138734b70 \ + --hash=sha256:4d45d2ba8195850e3e829f1f0016066a122bfa362cc9dc212527fc3d51369037 \ + --hash=sha256:4dd374927c00764fcd6fe1046bea243ebdf403fba97a937493ae4be2c8912c2b \ + --hash=sha256:506f5410b36e5ba494136d9fa04c548eaf1a0d9c442b0b0e7a0944db7620e0ab \ + --hash=sha256:59f7374769b326a217d0b2366f1c176a45a4ff21e8f7cebb3b4a3537077eff85 \ + --hash=sha256:5ee9789a20b0081dc469f65ff6c5007e67a940d5541419ca03ef20c6213dd099 \ + --hash=sha256:6fc711acc4a1c702ca931fdbf7bf7c86f2a27d564c85c4964772dadf0e3c52f5 \ + --hash=sha256:75d2ec3d9b401df759b87bc9e19d1b24db73083147089b43ae748aefa63067ef \ + --hash=sha256:76e0531d86523be7a46e15d379b0e975a9db84316617c0efe4af8338dc45b80c \ + --hash=sha256:8af82afc5998e1f307d5e72712526dba07403c73a9e287d906a8aa2b1f2e33dd \ + --hash=sha256:8f5d2c39f3283e461de3655e03faf10e4742bb87387113f787a7724f32db1e48 \ + --hash=sha256:97785604824981ec8c81850dd25c8071d5ce04717a34296eeac771231fbdd5cd \ + --hash=sha256:a3046e8ab29b590d723821d0785598e0b2e32b636a0272a38409be43e3ae0550 \ + --hash=sha256:abb0b3f2cb606981c7432f690db23506b1db5899620ad274e29dbbbdd740e797 \ + --hash=sha256:ac7c2046d907e3b4e2605a130d162b1b783c170292a11216479bb1deb7cadebe \ + --hash=sha256:af27b3fe5b6bf9cd01b8e1c5ddea0a0d0a1b8c37dc1c7452f1e90bf817539c6d \ + --hash=sha256:b386b8b9d2b6a5e1e4eadd4e62335571244cb9193b7328c2b6e38b64cfda4f0e \ + --hash=sha256:b66335bbdbb4c004c25ae01cc4a54fd199afbc1fd164233813c6d3c2293bb7e1 \ + --hash=sha256:d54f66c511ea01b9ef1d1a57420a93fbb9d48a08ec239f7d9c581092033156d0 \ + --hash=sha256:de125151a53ecdb39df3cb3deb9951ed834dd6a110a9e795d985b10bb6db4532 \ + --hash=sha256:de7916380abaef4bb4891740879b1afcba2045aee51799dfd6d6ca9bdc71f35f \ + --hash=sha256:e2fefad268ff5c5b314794e27e359e48aeb9c8bb2cbb5748a071757a56f6bb8f \ + --hash=sha256:e7b2bed4eea047a949296e618552d3fed00632dc1b795ee430289bdd0e3717f3 \ + --hash=sha256:e87698e2fea5ca2f0a99dff0a64ce8110ea857b640de536c76d92aaa2a91ff3a \ + --hash=sha256:ede888382882f07b9e4cd942255921ffd9f2901684198b88e247c7eabd27a000 \ + --hash=sha256:f444de0565db46d26c9fa931ca14f497900a295bd5eba480fc3fad25af8c763e \ + --hash=sha256:fa994e8937e8ccc7e87395b7b35092818905cf27c651e3ff3e7f29729f5ce3ce \ + --hash=sha256:febceb04ee7dd2aef08c2ff3d6f8a07de3052fc90137c507b0ede3ea80c21440 + # via gevent # The following packages are considered to be unsafe in a requirements file: setuptools==69.0.3 \ --hash=sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05 \ --hash=sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78 - # via fs + # via + # fs + # zope-event + # zope-interface diff --git a/backend/requirements/requirements.in b/backend/requirements/requirements.in index e8fbb93518..da19ba9455 100644 --- a/backend/requirements/requirements.in +++ b/backend/requirements/requirements.in @@ -12,8 +12,8 @@ django-fsm environs[django] faker fs -greenlet==2.0.2 -gunicorn +greenlet>=3.0rc3 +gunicorn[gevent] jsonpath-ng jsonschema newrelic @@ -21,6 +21,7 @@ oic openpyxl pandas peewee +psycogreen psycopg2-binary pycryptodome>=3.19.1 pycryptodomex>=3.19.1