Files
controller-wisetopdataserver/python/biopro/server/__pycache__/socket.cpython-37.opt-2.pyc
T

135 lines
15 KiB
Plaintext
Raw Normal View History

2021-12-20 14:52:55 +08:00
B
2021-12-22 14:29:56 +08:00
ò0ÀagOã@ddlZddlZddlZddlZddlZddlZddl m
2021-12-20 14:52:55 +08:00
Z
m Z ddlm
Z
ddlmZddlmZddlmZmZmZmZmZmZmZddlmZmZmZddlmZdd lmZm Z!m"Z"dd
l#m$Z$dd l%m&Z&m'Z'dd l(m)Z)dd
l*m+Z+m,Z,m-Z-m.Z.ddl/Tddl0m1Z1dZ2ej3j4dkr4d$e5dœddZ ne Z Gddde6ƒZ7Gddde6ƒZ8Gddde6ƒZ9edddZ:Gd d!„d!e'ej;d"Z<Gd#dde&ej;d"Z=dS)%éN)ÚExecutorÚThreadPoolExecutor)ÚDefaultSelector)ÚThread)Útime)ÚSetÚTypeÚUnionÚTypeVarÚTupleÚAnyÚOptional)ÚNAMEÚVERSIONÚ COPYRIGHT)ÚComplexResponse)ÚppÚ
foregroundÚ
2021-12-22 14:29:56 +08:00
LINE_BREAK)Ú
2021-12-20 14:52:55 +08:00
JsonSerialize)Ú
LoggerFlagÚLogger)Ú
long_sleep)Ú socket_sendÚ socket_recvÚSocketÚSocketTimeoutError)Ú)Ú
APIDispatcherFéé)Ú max_workerscCs
t|dS)N)r")Ú_ThreadPoolExecutor)r"Úthread_name_prefix©r%ú9/home/pi/wisetopdataserver/python/biopro/server/socket.pyrsrc@seZdZdZdS)ÚServerThreadClosedInterruptr%N)Ú__name__Ú
__module__Ú __qualname__Ú __slots__r%r%r%r&r'#sr'c@seZdZdZdS)ÚServerShutdownExceptionr%N)r(r)r*r+r%r%r%r&r,(sr,c@s*eZdZdZdZdZefedœddZdS)ÚServerRestartExceptionéé)ÚmodecCs|dkrtƒ||_dS)N)r.r/)Ú
ValueErrorr0)Úselfr0r%r%r&Ú__init__8szServerRestartException.__init__N)r(r)r*ZSERVER_RESTART_EXITZSERVER_DUMMY_EXITr+Úintr3r%r%r%r&r--sr-ÚT_ServerThreadÚ ServerThread)Úboundc@eZdZdZdZdJeeeedffeedœddZ e
ed œd
d ƒZ e
ed œd d
ƒZ e
ed œddƒZ
e
ed œddƒZe
ed œddƒZe
ed œddƒZe
ed œddƒZe
ed œddƒZeddœddZed œddZe
ed œd d!„ƒZejd"d#„ƒZejed$œd%d&„ƒZd'd(„Zd)d*„Zed œd+d,„Zd-d.„Z d/d0„Z!dKed1œd2d3„Z"d4d5„Z#e$d6œd7d8„Z%ee&j'e(d9œd:d;„Z)e$d6œd<d=„Z*e+ee+efd>œd?d@„Z,dAdB„Z-e.e.dCœdDdE„Z/dFdGœdHdI„Z0dS)LÚ SocketServerÚSOCKET_ACCEPT_KEY)Z
__socket_fileZ
__selectorZ__socketZ__socket_listenZ
__server_nameZ __dispatcherZ __log_levelZ__worker_threadZ
__executorZ__response_counterZ __close_flagZ __interruptZ__thread_pool_countZ__mqtt_server_ipZ__mqtt_server_port__db_hostZ __db_nameZ __db_userZ
__db_passwordÚ_threadsrr!.)Ú api_classÚ server_nameÚ socket_filecCsˆ||_||_d|_d|_||_t||ƒ|_tƒ|_g|_ t
  ¡|_ d|_
d|_d|_d|_||_d|_d|_d|_d|_d|_d|_dS) NrFz
52.194.17.114i[z 127.0.0.1ZpostgresÚbioproZBioProControlBox)Ú_SocketServer__server_nameÚ_SocketServer__socket_fileÚ_SocketServer__selectorÚ_SocketServer__socketÚ_SocketServer__socket_listenrÚ_SocketServer__dispatcherÚsetÚ_SocketServer__worker_threadr:Ú
_threadingÚEventÚ_eventÚ_SocketServer__executorÚ_SocketServer__response_counterÚ_SocketServer__close_flagÚ_SocketServer__interruptÚ _SocketServer__thread_pool_countÚ_SocketServer__mqtt_server_ipÚ_SocketServer__mqtt_server_portÚ_SocketServer__db_hostÚ_SocketServer__db_nameÚ_SocketServer__db_userÚ_SocketServer__db_password)r2r;r<r=Z
socket_listenZthread_pool_countr%r%r&r3Qs( 
zSocketServer.__init__)ÚreturncCs|jS)N)r?)r2r%r%r&r<szSocketServer.server_namecCs|jS)N)r@)r2r%r%r&r=szSocketServer.socket_filecCs|jS)N)rQ)r2r%r%r&Úsocket_db_hostszSocketServer.socket_db_hostcCs|jS)N)rR)r2r%r%r&Úsocket_db_name“szSocketServer.socket_db_namecCs|jS)N)rS)r2r%r%r&Úsocket_db_user—szSocketServer.socket_db_usercCs|jS)N)rT)r2r%r%r&Úsocket_db_passwordszSocketServer.socket_db_passwordcCs|jS)N)rP)r2r%r%r&Úsocket_mqtt_portŸszSocketServer.socket_mqtt_portcCs|jS)N)rO)r2r%r%r&Úsocket_mqtt_ip£szSocketServer.socket_mqtt_ipN)Ú exceptionrUcCsts| d|jj¡||_dS)Nzinterrupt with)Ú_RUNTIME_COMPILEÚlog_infoÚ __class__r(rM)r2r\r%r%r&Ú interrupt§szSocketServer.interruptcCs.|jdk r(t|jtƒr$t|jjƒndS|jS)NT)rMÚ
isinstancer-r0rL)r2r%r%r&Úis_interrupted±s

 zSocketServer.is_interruptedcCs|jS)N)rL)r2r%r%r&Ú is_closedºszSocketServer.is_closedcCsdS)Nr%)r2r%r%r&Úsetup¾szSocketServer.setup)Úexternal_interruptcCsdS)Nr%)r2rer%r%r&ÚcloseÅszSocketServer.closecCs| d¡| tƒ¡dS)Nzshutdown server)r^r`r,)r2r%r%r&Úshutdown_serverÍs
zSocketServer.shutdown_servercCs| d¡| tƒ¡dS)Nzrestart server)r^r`r-)r2r%r%r&Úrestart_serverÑs
zSocketServer.restart_serverc
Cs| t¡| tt|j¡| t¡| t¡| d|jd¡|jdkrZt|j|jd}nd}||_ d|_
d}d}z.yF|  ¡z|  ¡| 
¡Wd| ¡d|_
|dk r¸|jddXWtk
tdƒ| d ¡d}Ytk
r| d
¡d}Yn˜tk
r:}z| d ¡|j}Wdd}~XYnftk
r†t ¡\}}}d t|ƒkrt| d
¡d}tst|ƒYntsšt|ƒYnXWd| d¡y| d¡Wn| d¡YnXyzt|jƒ}x|D]} |   ¡qæW|  |¡|rLx|D]} |  !d¡qWx(|D] } | j" r(| | j$d¡q(WWn.tk
rdYntsxt|ƒYnXX| d|jd|¡|S)startÚprocessr)r$r"FT)ÚwaitÚzinterrupt capturedzcatch server shutdown signalzcatch server restart signalz![Errno 98] Address already in usez,server fatal error : process has already runrz
close serviceÚshutdownz broadcast_command shutdown errorr/z still aliveÚserverÚexit)%r^rrrr?rÚ log_verboserNrrJrLÚ_handle_socket_openrdÚ_handle_socket_routine_foreverÚ_handle_socket_closermÚKeyboardInterruptÚprintÚlog_warnr,r-r0ÚOSErrorÚsysÚexc_infoÚstrZ log_errorr]Úprint_exceptionZbroadcast_commandÚlistrFrfÚjoinÚthreadÚis_aliveZlog_name)
r2ZexecutorÚ exit_codereÚeZe_typeZe_valueZe_stackZcurrent_workerZworkerr%r%r&ÚmainÖs



  



 





 zSocketServer.maincC|jdk s|jdk rtdƒtj |j¡r6t |j¡tƒ|_t t
j t
j ƒ|_|}t
|tƒrj| d|j¡|j |j¡|j |j¡|j d¡|j |jtj|j¡dS)NzSocketHandler has openedÚlistenF)rArBÚ RuntimeErrorÚosÚpathÚexistsr@ÚremoverrÚ_socketZAF_UNIXZ SOCK_STREAMrarrpZbindrƒrCÚ setblockingÚregisterÚ
_selectorsÚ
EVENT_READr9)r2Zloggerr%r%r&rqIs 
 z SocketServer._handle_socket_opencCsV|j}|j}|dk r| ¡|dk r,| ¡tj |j¡rFt |j¡d|_d|_dS)N)rArBrfr…r†r‡r@rˆ)r2ÚselectorÚsocketr%r%r&rses z!SocketServer._handle_socket_close)ÚtimeoutcCst|j}|dkrtdƒ| |¡}| ¡r,dSxB|D]:\}}|j|jkr2|j}| ¡\}}| d¡|  |¡q2WdS)NzSocketHandler not openF)
rAr„ÚselectrbÚdatar9ÚfileobjÚacceptrŠÚ_handle_socket_accept)r2rrÚ_rÚcntr%r%r&Ú_handle_socket_routine_oncews
  
z(SocketServer._handle_socket_routine_oncecCs|j}|dkrtdƒxf| ¡s|| d¡}| ¡r6dSxB|D]:\}}|j|jkr<|j}| ¡\}}| d¡|  |¡q<WqWdS)NzSocketHandler not openrF)
rAr„rbrrr9r“r”r•)r2rrr—rr˜r%r%r&rrs

  
z+SocketServer._handle_socket_routine_forever)rcCs,|j}|jd7_| |j||tƒ¡dS)Nr)rKÚ
submit_threadÚ#_SocketServer__handle_socket_acceptr)r2rÚcr%r%r&r•©sz"SocketServer._handle_socket_accept)ÚcounterrÚ init_timec Csjtƒ}||d}t ¡}td|t|ƒdƒ}||_zy| |¡Wn~ttfk
rt}z|  |¡Wdd}~XYnPt
k
r|  |d¡Yn2t k
|  |d¡Ynt
|ƒYnXWdts`tƒ} | |d}
| |d} |dkrd|d}nd|}|
dkr$d|
d}
nd|
}
| dkrDd| d} nd | } |  d
|d |
d | ¡|`XdS)
Nièz%04dú]z broken piperz%.1f s,z%.2f ms,z%.1f sz%.2f msrkZliveZtotal)rrGÚcurrent_threadrÚ_fcZ
log_headerÚ_handle_socket_communicater-r,r`ÚBrokenPipeErrorrprr{r]) r2rrZ
start_timeZ wait_timer~ÚheaderrZ
close_timeZ live_timeZ
total_timer%r%r&Z__handle_socket_accept°s@   


z#SocketServer.__handle_socket_acceptcCspz`yFd}x<| ¡sD|rDt|dƒ}|dkr*P| |¡\}}t||ƒq
WWntk
r\YnXWd| ¡XdS)NTé)rbrÚ_handle_socket_receiverrrf)r2rZgoZrecvÚsendr%r%r&æs

z'SocketServer._handle_socket_communicate)ÚcontentrUc
Ct|tƒrt|ƒdkrdSy|\}}}Wntk
r<dSXy|j |||¡}WnHtk
}z*t|tƒrvt|ƒt |j
j f|j žŽdfSd}~XYn0Xt|t
ƒr¼t
t |j¡|ƒdfSt |¡dfSdS)Nr)NFT)raÚtupleÚlenr1rDZmethod_dispatchÚ
BaseExceptionrr{r„r_r(ÚargsrrZto_jsonZresponse)r2ÚmethodZargumentZoptionsÚretrr%r%r&þs
&
z#SocketServer._handle_socket_receivec
Gs€|jdk r|jj|f|žŽn^y ||ŽWnPtk
rV}z| |¡Wdd}~XYn&tk
rhYnt|ƒYnXdS)N)rJÚsubmitr,r`r'r{)r2Úfr¬rr%r%r&s
 zSocketServer.submit_thread)r~rUcCs@|dkrtdƒ| d¡|jdk r<|j |j |j|¡¡|S)NzNoneType for ServerThreadri)Ú TypeErrorrprJr:Úappendr¯Ú _run_thread)r2r~r%r%r&Ú
run_thread-s 

zSocketServer.run_threadr6)r~cCs z¨yR|j |¡| d¡| ¡|j ¡sR| d¡x|j ¡sP| |j¡q8WWnPtk
r€}z| |¡Wdd}~XYn&t k
rYnt
|ƒYnXWdz:y| d¡|  ¡Wnt k
| 
d¡YnXWdy|j |¡Wntk
r YnX| d¡XXdS)NrdÚroutineÚclosingzclosing interruptÚclosed)rFÚaddrprdrIÚis_setrµr,r`r'r{rmrtrvrˆÚKeyError)r2r~rr%r%r&Bs0