/opt/cloudlinux/venv/lib/python3.11/site-packages/ssa/modules/__pycache__
NameSizeModeActions
autotracer.cpython-311.pyc303200644editdlrm
common.cpython-311.pyc33060644editdlrm
decision_maker.cpython-311.pyc159270644editdlrm
processor.cpython-311.pyc158910644editdlrm
stat_sender.cpython-311.pyc127710644editdlrm
storage.cpython-311.pyc125350644editdlrm
__init__.cpython-311.pyc1840644editdlrm
Edit: /opt/cloudlinux/venv/lib/python3.11/site-packages/ssa/modules/__pycache__/processor.cpython-311.pyc (15891B)
§ HIehõ$ãó"—dZddlZddlZddlZddlZddlZddlmZmZmZddl m Z m Z m Z ddl mZmZddlmZmZddlmZdd lmZdd lmZdd lmZdd lmZd dlmZmZm Z m!Z!m"Z"m#Z#d dl$m%Z%d dl&m'Z'm(Z(m)Z)e'Gd„de¦«¦«Z*dS)z- This module contains RequestProcessor class éN)ÚdatetimeÚ timedeltaÚtimezone)ÚThreadÚRLockÚcurrent_thread)ÚCallableÚAny)ÚQueueÚEmpty)ÚOperationalErroré)Ú AutoTracer)ÚCommon)Ú DecisionMaker)ÚStatisticsSenderé)Ú session_scopeÚsetup_databaseÚ RequestResultÚcleanup_old_dataÚrestore_databaseÚis_malformed_database)ÚSSAError)Ú singletonÚ url_splitÚswitch_schedstatscóÞ‡—eZdZdZdZdZdˆfd„ Zed„¦«Zde fd„Z dd „Z dd „Z dd „Z d ed efd„Zddefd„Zd„Zd„Zeded efd„¦«Zd„Zd„Zd„Zde d dfd„Zd„Zd„ZˆxZS) ÚRequestProcessorz^ SSA Request processor implementation. Only one instance is allowed to be created édéNcóЕ—t¦« ¦«tjd¦«|_|j dt ¦«td¬¦«|r|n t¦«|_ t¦«|_ t|j ¬¦«|_ t¦«|_t!|j ¬¦«|_t%¦«|_g|_| ¦«| ¦«t/jt.j|j¦«t/jt.j|j¦«dS)NÚ req_processorzProcessor enabled: %sT©Úenabled)Úengine)ÚsuperÚ__init__ÚloggingÚ getLoggerÚloggerÚinfoÚ __package__rrr&rÚ_lockrÚdecision_makerrÚsenderrÚ auto_tracerr Ú_queueÚ_bufferÚstart_background_routineÚstart_flush_workerÚsignalÚSIGTERMÚshutdown_handlerÚSIGINT)Úselfr&Ú __class__s €úL/opt/cloudlinux/venv/lib64/python3.11/site-packages/ssa/modules/processor.pyr(zRequestProcessor.__init__-sø€Ý ‰Œ×ÒÑÔÐÝÔ'¨Ñ8Ô8ˆŒ Ø Œ ×ÒÐ0µ+Ñ>Ô>Ð>å $Ð'Ñ'Ô'Ð'à &Ð<�f�f­NÑ,<Ô,<ˆŒ Ý‘W”WˆŒ Ý+°4´;Ð?Ñ?Ô?ˆÔÝ&Ñ(Ô(ˆŒ Ý%¨T¬[Ð9Ñ9Ô9ˆÔÝ‘g”gˆŒ ؈Œ Ø ×%Ò%Ñ'Ô'Ð'Ø ×ÒÑ!Ô!Ð!õ Œ •f”n dÔ&;Ñ<Ô<Ð<ÝŒ •f”m TÔ%:Ñ;Ô;Ð;Ð;Ð;ócó—|jdzS)zp Return config file value multiplied by 1000000, as we receive duration in microseconds i@B)Úrequests_duration©r:s r<Úconfigured_durationz$RequestProcessor.configured_durationBs€ð Ô%¨Ñ/Ð/r=Úreportcó¼— |j |¦«dS#t$r3}|j dt |¦«¦«Yd}~dSd}~wwxYw)z( Call Statistics Sender zStatisticsSender failed: %sN)r0Úsendrr+ÚerrorÚstr)r:rBÚes r<Ú send_statszRequestProcessor.send_statsJsx€ð EØ ŒK× Ò ˜VÑ $Ô $Ð $Ð $Ð $øÝð Eð Eð EØ ŒK× Ò Ð;½SÀ¹V¼VÑ DÔ DÐ DÐ DÐ DÐ DÐ DÐ DÐ Døøøøð Eøøøs‚ž A¨(AÁAÚreturncóš—t|jd¬¦«}| ¦«|j d|j¦«dS)zA Start dumper|DecisionMaker thread in background T©ÚtargetÚdaemonz[%s] Routine startedN)rÚbackground_routineÚstartr+r,Úname©r:Úts r<r4z)RequestProcessor.start_background_routineSsG€õ ˜$Ô1¸$Ð ?Ñ ?Ô ?ˆØ �Љ Œ ˆ Ø Œ ×ÒÐ/°´Ñ8Ô8Ð8Ð8Ð8r=cóš—t|jd¬¦«}| ¦«|j d|j¦«dS)z+ Start flush worker thread TrKz[%s] Flush worker startedN)rÚ flush_workerrOr+r,rPrQs r<r5z#RequestProcessor.start_flush_worker[sG€õ ˜$Ô+°DÐ 9Ñ 9Ô 9ˆØ �Љ Œ ˆ Ø Œ ×ÒÐ4°a´fÑ=Ô=Ð=Ð=Ð=r=có2— tjtj¦«}|jdk�rÑ|jdk�r¯t |j¦«rZ| |  |j¦«¦«|j   dt¦«j |¦«|j   dt¦«j |¦«| |j¦«|j   dt¦«j |¦«| |j¦«|j   dt¦«j |¦«| |j¦«}|j   dt¦«j |¦«t#|j¦«| |j|¦«t'd¬¦«| d ¦«n| |j¦«�Œ) z“ Dumps collected stats to file once an hour. Runs DecisionMaker once a day Cleanup storage after DecisionMaker run TrzP[%s] Routine thread found Database disk image is malformed and now restored (%s)z2[%s] Routine thread launching buffer flushing (%s)z-[%s] Routine thread launching AutoTracer (%s)z0[%s] Routine thread launching DecisionMaker (%s)z*[%s] Routine thread launching cleanup (%s)r$é<)rÚnowrÚutcÚminuteÚhourrr&Ú _safe_execÚrestore_db_with_lockr+r,rrPÚflush_remaining_objectsr1r/rrHrÚ _simple_sleepÚ_sleep_till_next_hour)r:ÚtickrBs r<rNz#RequestProcessor.background_routinecsï€ð 8Ý”<¥¤ Ñ-Ô-ˆDØŒ{˜aÒÑØ”9 ’>‘>Ý,¨T¬[Ñ9Ô9ð9ØŸš¨×(AÒ(AÀ$Ä+Ñ(NÔ(NÑOÔOÐOØœ ×(Ò(ØnÝ*Ñ,Ô,Ô1°4ñ9ô9ð9ð”K×$Ò$ØLÝ&Ñ(Ô(Ô-¨tñ5ô5ð5ð—O’O DÔ$@ÑAÔAÐAØ”K×$Ò$ØGÝ&Ñ(Ô(Ô-¨tñ5ô5ð5ð—O’O DÔ$4Ñ5Ô5Ð5Ø”K×$Ò$ØJÝ&Ñ(Ô(Ô-¨tñ5ô5ð5ð"Ÿ_š_¨TÔ-@ÑAÔA�FØ”K×$Ò$ØDÝ&Ñ(Ô(Ô-¨tñ5ô5ð5õ% T¤[Ñ1Ô1Ð1à—O’O D¤O°VÑ<Ô<Ð<õ&¨dÐ3Ñ3Ô3Ð3Ø×"Ò" 2Ñ&Ô&Ð&Ð&à×*Ò*¨4¬;Ñ7Ô7Ð7ñA 8r=Úactionc óÜ— ||ŽS#t$rZtj¦«\}}}|j dt |¦«||dt j¦«i¬¦«YdSwxYw)zACall requested Callable with given args and capture any exceptionz%s failed with exception %s, %sÚorig_traceback)ÚextraN)Ú ExceptionÚsysÚexc_infor+Ú exceptionrFÚ tracebackÚ format_exc)r:raÚargsÚetÚevÚ_s r<r[zRequestProcessor._safe_exec‹s™€ð TØ�6˜4�=Ð øÝð Tð Tð TÝœ ™œ‰IˆB��AØ ŒK× !Ò !Ð"CÝ"% f¡+¤+¨r°2Ø)9½9Ô;OÑ;QÔ;QÐ(Rð "ñ Tô Tð Tð Tð Tð Tð Tøøøs‚‡A A+Á*A+é„Úto_sleepcóˆ—|j dt¦«j|¦«t j|¦«dS)zP Log and sleep given number of seconds or 15 minutes by default z%[%s] Routine thread sleeping for (%s)N)r+r,rrPÚtimeÚsleep)r:rps r<r^zRequestProcessor._simple_sleep•sE€ð Œ ×ÒÐ@Ý'Ñ)Ô)Ô.°ñ :ô :ð :å Œ �8ÑÔÐÐÐr=có°—td¬¦«t|¬¦«z  ¦«}| t|¦«¦«dS)zF Sleep the number of minutes remaining till next hour r)Úhours)ÚminutesN)rÚ total_secondsr^Úint)r:Ú start_minuteÚ sleep_fors r<r_z&RequestProcessor._sleep_till_next_hour�sY€õ QÐ'Ñ'Ô'­)Ø ð+"ñ+"ô+"ñ"ß#0¢=¡?¤?ð à ×Ò�3˜y™>œ>Ñ*Ô*Ð*Ð*Ð*r=cód—|j5t|¦«ddd¦«dS#1swxYwYdS©N)r.r)r:r&s r<r\z%RequestProcessor.restore_db_with_lock¥s|€Ø ŒZð %ð %Ý ˜VÑ $Ô $Ð $ð %ð %ð %ñ %ô %ð %ð %ð %ð %ð %ð %ð %øøøð %ð %ð %ð %ð %ð %s ˆ%¥)¬)Ú timestampcóJ—tj|tj¦«jS)zN Takes an hour of a day, to which the given timestamp belongs )rÚ fromtimestamprrXrZ)r}s r<Úget_interval_forz!RequestProcessor.get_interval_for©s€õ Ô% iµ´Ñ>Ô>ÔCÐCr=có@— |j ¦«}|j |¦«t |j¦«|jkr!| |j¦«g|_n*#t$r|j  d¦«YnwxYwŒž)zK Continuously flush queued request results to the database TzFlush worker failed) r2Úgetr3ÚappendÚlenÚ BUFFER_SIZEÚ_flush_objectsrer+rh©r:Úobjs r<rTzRequestProcessor.flush_worker°s¦€ð =ð =Ø”k—o’oÑ'Ô'�Ø” ×#Ò# CÑ(Ô(Ð(Ý�t”|Ñ$Ô$¨Ô(8Ò8Ð8Ø×'Ò'¨¬ Ñ5Ô5Ð5Ø#%�D”LøøÝð =ð =ð =Ø” ×%Ò%Ð&;Ñ<Ô<Ð<Ð<Ð<ð =øøøð =sƒA1A5Á5$BÂBcóÊ—|jr[ | |j¦«n*#t$r|j d¦«YnwxYwg|_dS#g|_wxYwdS)zq Flush all remaining objects even if less than BUFFER_SIZE. Should be called once a day. zFlush remaining objects failedN)r3r†rer+rhr@s r<r]z(RequestProcessor.flush_remaining_objects¾s’€ð Œ<ð "ð "Ø×#Ò# D¤LÑ1Ô1Ð1Ð1øÝð Hð Hð HØ” ×%Ò%Ð&FÑGÔGÐGÐGÐGð Høøøð "�” � � ø˜r�” Ð!Ð!Ð!Ð!ð  "ð "s&‰$£A¤$A ÁAÁ A Á AÁ A có€—t|j¦«D]¨} t|j¦«5}| |¦«ddd¦«n #1swxYwYdS#t $rU}dt |¦«vr9|j d|dz|j¦«tj d¦«n‚Yd}~Œ¡d}~wwxYwdS)Nzdatabase is lockedz-Database is locked, retrying attempt %s/%s...rgš™™™™™¹?) ÚrangeÚDB_ACCESS_RETRIESrr&Úbulk_save_objectsr rFr+Úwarningrrrs)r:ÚobjectsÚattemptÚdbrGs r<r†zRequestProcessor._flush_objectsËs€Ý˜TÔ3Ñ4Ô4ð ð ˆGð Ý" 4¤;Ñ/Ô/ð2°2Ø×(Ò(¨Ñ1Ô1Ð1ð2ð2ð2ñ2ô2ð2ð2ð2ð2ð2ð2øøøð2ð2ð2ð2à��øÝ#ð ð ð Ø'­3¨q©6¬6Ð1Ð1Ø”K×'Ò'Ð(WÐY`ÐcdÑYdÐfjÔf|Ñ}Ô}Ð}Ý”J˜s‘O”O�O�Oàð$�O�O�O�Oøøøøð øøøð ð s;˜A¬AÁ AÁA ÁAÁA ÁAÁ B;Á&A B6Â6B;Údatac óâ—|s.|j dt¦«j¦«dS| d¦«}| |¦«r|j d|¦«dSt|¦«\}}t|||d|d|d|j k|d|d|d |d ¬ ¦ « }|j   |¦«dS) z, Process given request data z [%s] has empty request, skippingNÚurlz %s ignoredr}ÚdurationÚhitting_limitsÚthrottled_timeÚio_throttled_timeÚ wordpress) ÚdomainÚpathr}r•Úis_slow_requestr–r—r˜r™) r+r,rrPr‚Ú is_ignoredÚdebugrrrAr2Úput)r:r’r”ršÚuriÚrequests r<ÚhandlezRequestProcessor.handleØsû€ðð Ø ŒK× Ò Ð?ÅÑAQÔAQÔAVÑ WÔ WÐ WØ ˆFØ�hŠh�u‰oŒoˆØ �?Š?˜3Ñ Ô ð Ø ŒK× Ò ˜l¨CÑ 0Ô 0Ð 0Ø ˆFÝ ‘n”n‰ ˆ�åØØØ˜;Ô'ؘ*Ô%Ø  Ô,¨tÔ/GÒGØÐ 0Ô1ØÐ 0Ô1Ø"Ð#6Ô7ؘ;Ô'ð  ñ  ô  ˆð Œ �Š˜Ñ Ô Ð Ð Ð r=cóD—|j d|›d�¦« | ¦«| ¦«n*#t$r|j d¦«YnwxYwt jd¦«dS#t jd¦«wxYw)zQ Handle shutdown signals to flush remaining objects before exit. zReceived shutdown signal z+, flushing queue and buffer before shutdownz1Failed to flush remaining objects during shutdownrN)r+r,Ú_drain_queue_to_bufferr]rerhrfÚexit)r:ÚsignumÚframes r<r8z!RequestProcessor.shutdown_handlerós³€ð Œ ×ÒÐh°VÐhÐhÐhÑiÔiÐið Ø × 'Ò 'Ñ )Ô )Ð )Ø × (Ò (Ñ *Ô *Ð *Ð *øÝð Wð Wð WØ ŒK× !Ò !Ð"UÑ VÔ VÐ VÐ VÐ Vð Wøøøõ ŒH�Q‰KŒKˆKˆKˆKø�CŒH�Q‰KŒKˆKˆKøøøs) (A ÁB Á $A0Á-B Á/A0Á0B  Bcóú—|j ¦«sa |j ¦«}|j |¦«n#t $rYdSwxYw|j ¦«¯_dSdS)zC Drain all remaining objects from queue to buffer. N)r2ÚemptyÚ get_nowaitr3rƒr r‡s r<r¤z'RequestProcessor._drain_queue_to_buffers™€ð”+×#Ò#Ñ%Ô%ð ð Ø”k×,Ò,Ñ.Ô.�Ø” ×#Ò# CÑ(Ô(Ð(Ð(øÝð ð ð Ø��ð øøøð ”+×#Ò#Ñ%Ô%ð ð ð ð ð s›3AÁ AÁAr|)rIN)ro)Ú__name__Ú __module__Ú __qualname__Ú__doc__r…rŒr(ÚpropertyrAÚdictrHr4r5rNr r r[rxr^r_r\Ú staticmethodr€rTr]r†r¢r8r¤Ú __classcell__)r;s@r<rr#sÓø€€€€€ððð €KØÐð<ð<ð<ð<ð<ð<ð*ð0ð0ñ„Xð0ðE ðEðEðEðEð9ð9ð9ð9ð>ð>ð>ð>ð&8ð&8ð&8ð&8ðPT ðT°SðTðTðTðTðð cððððð+ð+ð+ð%ð%ð%ððD CðD¨CðDðDðDñ„\ðDð =ð =ð =ð "ð "ð "ð ð ð ð!˜4ð! Dð!ð!ð!ð!ð6 ð ð ð ð ð ð ð ð ð r=r)+r®r)rfrrr6rirrrÚ threadingrrrÚtypingr r Úqueuer r Úsqlalchemy.excr Ú autotracerrÚcommonrr/rÚ stat_senderrr‘rrrrrrÚinternal.exceptionsrÚinternal.utilsrrrr©r=r<úr½sÅðððð€€€Ø € € € Ø € € € Ø € € € ØÐÐÐØ2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ø3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ø Ð Ð Ð Ð Ð Ð Ð ØÐÐÐÐÐÐÐØ+Ð+Ð+Ð+Ð+Ð+à"Ð"Ð"Ð"Ð"Ð"ØÐÐÐÐÐØ)Ð)Ð)Ð)Ð)Ð)Ø)Ð)Ð)Ð)Ð)Ð)ØxÐxÐxÐxÐxÐxÐxÐxÐxÐxÐxÐxÐxÐxÐxÐxØ*Ð*Ð*Ð*Ð*Ð*ððððððððððð ðeðeðeðeðe�vñeôeñ „ðeðeðer=