
    $6j                    |   S SK Jr  S SKrS SKrS SKrS SKrS SKrS SK	r	S SK
r
S SKJr  \" \5      R                  5       R                  r\" \R$                  " SS5      5      r\" \R$                  " SS5      5      r\" \R$                  " SS	5      5      rSS
 jrSSS jjrSS jrSS jrSS jr\S:X  a  \" 5         gg)    )annotationsN)PathPORT8086UPDATE_HOUR16UPDATE_MINUTE0c                 l    [         R                  " SS/[        SS9n [        SU R                   35        g )Npythonzfetch_stock_data.pyF)cwdcheckz%fetch_stock_data.py exited with code )
subprocessrunBASE_DIRprint
returncode)results    *C:\coding\trading\faintry-stock\run_app.py	run_fetchr      s8    ^^	()F
 
1&2C2C1D
EF    c                    U =(       d    [         R                  R                  5       n U R                  [        [
        SSS9nX::  a  U[         R                  " SS9-  nX-
  R                  5       $ )Nr   )hourminutesecondmicrosecond   )days)dtdatetimenowreplacer   r	   	timedeltatotal_seconds)r!   targets     r   seconds_until_next_updater&      sW    

""C[[k-WX[YF}",,A&&L''))r   c                     [        5       n [        R                  R                  5       [        R                  " U S9-   n[        SUS S[        U 5       S[        S S[        S S3	5        [        R                  " U 5        [        5         M  )	N)secondszNext data update at z%Y-%m-%d %H:%Mz (in zs), daily at 02d:z Asia/Jakarta)r&   r   r    r!   r#   r   intr   r	   timesleepr   )waitnext_runs     r   refresh_loopr0   $   s}    
(*;;??$r||D'AA"8N"; <t9+];s*;1]3<O}^	
 	

4 r   c                     [         R                  " [        5        [        R                  R
                  n [        R                  " S[        4U 5       n[        S[         S35        UR                  5         S S S 5        g ! , (       d  f       g = f)N z(Serving Faintry Stock at http://0.0.0.0:z/ui/)oschdirr   httpserverSimpleHTTPRequestHandlersocketserver	TCPServerr   r   serve_forever)handlerhttpds     r   server=   0   s]    HHXkk22G			T
G	48dCD 
5	4	4s   $A??
Bc                     [        S5        [        5         [        R                  " [        SS9n U R                  5         [        5         g )NzStarting Faintry Stock app...T)r%   daemon)r   r   	threadingThreadr0   startr=   )workers    r   mainrD   8   s0    	
)*K\$?F
LLN	Gr   __main__)returnNone)N)r!   zdt.datetime | NonerF   float)
__future__r   r    r   http.serverr5   r3   r8   r   r@   r,   pathlibr   __file__resolveparentr   r+   getenvr   r   r	   r   r&   r0   r=   rD   __name__ r   r   <module>rR      s    "   	      >!!#**
299VV$%"))M401BIIos34G*	 zF r   