ó
ßüÚ\c        $   @` s7  d  d l  m Z m Z m Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l m	 Z	 d  d l
 Z
 d  d l Z d  d l Z d  d l m Z m Z d  d l m Z m Z d  d l m Z d  d l m Z d  d l m Z m Z m Z d  d	 l m Z d  d
 l m Z d  d l m  Z  m! Z! d  d l" m# Z# d  d l$ m% Z% m& Z& d  d l' m( Z( e j) d ƒ Z* e j+ d e, d e, ƒ Z- e j. d e/ d e, ƒ ƒ e j0 d d e1 d e2 ƒe j3 d d e- d d d d ƒe j3 d d e- d d d d ƒe j3 d d e- d d d d ƒe j3 d d e5 d d  d d  ƒe j3 d! d e5 d d  d d" ƒe j3 d# d e5 d d d d$ ƒe j3 d% d e1 d d& d d' ƒe j3 d( d) d e, d* e, d e2 d d+ ƒe j3 d, d e1 d d d d- ƒe j3 d. d e1 d d d d/ ƒe j3 d0 d e1 d d d d1 ƒe j3 d2 d e1 d d d d3 ƒe j3 d4 d e5 d d  d d5 ƒe j3 d6 d e5 d d7 d d8 ƒe j3 d9 d e1 d d: d d; ƒe j3 d< d d= d d> ƒe j3 d? d e, d d@ ƒe j3 dA d e, d dB ƒe j3 dC d e1 d d: d dD ƒe j3 dE d d: d e1 d dF ƒe j3 dG d e1 d d: d dH ƒe j3 dI d e1 d d: d dJ ƒe j3 dK d e1 d d d dL ƒe j3 dM d e1 d d d dN ƒe j3 dO d e1 dP e, dQ e, d dR ƒe j0 dS dT dU d e j6 dV e ƒdW „  ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ Z7 dX „  Z8 e9 dY k r3e8 ƒ  n  d S(Z   i    (   t   print_functiont   divisiont   absolute_importN(   t   exit(   t   Nannyt   Worker(   t   get_ip_interfacet   parse_timedelta(   t   _ncores(   t   Security(   t   check_python_3t   uri_from_host_portt   install_signal_handlers(   t   get_address_host_port(   t   validate_preload_argv(   t   enable_proctitle_on_childrent   enable_proctitle_on_current(   t   valmap(   t   IOLoopt   TimeoutError(   t   gens   distributed.dask_workert   existst   resolve_patht   context_settingst   ignore_unknown_optionst	   schedulert   typet   requireds   --tls-ca-filet   defaultt   helps'   CA cert(s) file for TLS (in PEM format)s
   --tls-certs(   certificate file for TLS (in PEM format)s	   --tls-keys(   private key file for TLS (in PEM format)s   --worker-ports,   Serving computation port, defaults to randoms   --nanny-ports&   Serving nanny port, defaults to randoms   --bokeh-ports$   Deprecated.  See --dashboard-addresss   --dashboard-addresss   :0s4   Address on which to listen for diagnostics dashboards   --bokeh/--no-bokeht   bokeht   show_defaults   Launch Bokeh Web UIs   --listen-addresssB   The address to which the worker binds. Example: tcp://0.0.0.0:9000s   --contact-addresss}   The address the worker advertises to the scheduler for communication with it and other workers. Example: tcp://127.0.0.1:9000s   --hostsÉ   Serving host. Should be an ip address that is visible to the scheduler and other workers. See --listen-address and --contact-address if you need different listen and contact addresses. See --interface.s   --interfaces&   Network interface like 'eth0' or 'ib0's
   --nthreadss   Number of threads per process.s   --nprocsi   s7   Number of worker processes to launch.  Defaults to one.s   --namet    sŽ   A unique name for this worker like 'worker-1'. If used with --nprocs then the process number will be appended like name-0, name-1, name-2, ...s   --memory-limitt   autosÂ   Bytes of memory per process that the worker can use. This can be an integer (bytes), float (fraction of total system memory), string (like 5GB or 5000M), 'auto', or zero for no memory managements   --reconnect/--no-reconnects&   Reconnect to scheduler if disconnecteds   --nanny/--no-nannys-   Start workers in nanny process for managements
   --pid-files   File to write the process PIDs   --local-directorys   Directory to place worker filess   --resourcess¶   Resources for task constraints like "GPU=2 MEM=10e9". Resources are applied separately to each worker process (only relevant when starting multiple worker processes with '--nprocs').s   --scheduler-filesX   Filename to JSON encoded scheduler information. Use with dask-scheduler --scheduler-files   --death-timeouts.   Seconds to wait for a scheduler before closings   --bokeh-prefixs   Prefix for the bokeh apps	   --preloadt   multiplet   is_eagersW   Module that should be loaded by each worker process like "foo.bar" or "/path/to/foo.py"t   preload_argvt   nargsiÿÿÿÿt   callbackc   -   #   ` sO  t  j ƒ  \ } } } t  j | d | d | d ƒ t ƒ  t ƒ  | d  k	 rh t j d | ƒ | } n  t d | d | d | ƒ } | d k rµ | d k rµ t	 j
 d ƒ t d ƒ n  | d k râ ˆ râ t	 j
 d	 ƒ t d ƒ n  | r	| r	t	 j
 d
 ƒ t d ƒ n  | d k r5| r5t	 j
 d ƒ t d ƒ n  | sA| ra| rat	 j
 d ƒ t d ƒ n  yL | r…t | d t ƒ\ } } n  | r¦t | d t ƒ\ } } n | } Wn4 t k
 rã}  t	 j
 d t |  ƒ ƒ t d ƒ n Xˆ ró| }! n | }! | st | } n  ˆ rbt ˆ d ƒ   }" |" j t t j ƒ  ƒ ƒ Wd  QX‡ f d †  }# t j |# ƒ n  i  }$ | rËy d d l m }% Wn t k
 r•qËX| r²|% i | d 6f }& n |% }& |& |$ d | f <n  | r| j d d ƒ j ƒ  } t d „  | Dƒ ƒ } t t | ƒ } n d  } t j  ƒ  }' ˆ rFi | d 6| d 6}( t! }) n& i  }( | rfi | d 6|( d <n  t" }) |  r¤| r¤t# j$ j% d d  ƒ d  k r¤t d ƒ ‚ n  | rÎ| r¿t d ƒ ‚ qÎt& | ƒ } n  | sÚ|! rït' | |! d ƒ ‰  n d  ‰  | d  k	 rt( | d ƒ } n  g  t) | ƒ D] }* |) |  d | d  | d! |$ d" |' d# | d$ |
 d% | d& | d' | d( | d) | d* | d+ | d, | d k s|	 r–|	 n |	 d- t |* ƒ |( ^ q ‰ t* j+ ‡ ‡ f d. †  ƒ ‰ ‡ f d/ †  }+ t* j+ ‡  ‡ f d0 †  ƒ }, t, |' d1 |+ ƒz/ y |' j- |, ƒ Wn t. t/ f k
 r8n XWd  t	 j0 d2 ƒ Xd  S(3   Ni   sk   The --bokeh-port flag has been renamed to --dashboard-address. Consider adding ``--dashboard-address :%d`` t   tls_ca_filet   tls_worker_certt   tls_worker_keyi   i    sM   Failed to launch worker.  You cannot use the --port argument when nprocs > 1.sQ   Failed to launch worker.  You cannot use the --no-nanny argument when nprocs > 1.sV   Failed to launch worker. Must specify --listen-address when --contact-address is givensM   Failed to launch worker. You cannot specify --listen-address when nprocs > 1.sc   Failed to launch worker. You cannot specify --listen-address when --worker-port or --host is given.t   stricts   Failed to launch worker. t   wc           ` s&   t  j j ˆ  ƒ r" t  j ˆ  ƒ n  d  S(   N(   t   ost   pathR   t   remove(    (   t   pid_file(    s:   lib/python2.7/site-packages/distributed/cli/dask_worker.pyt   del_pid_file  s    (   t   BokehWorkert   prefixR   t   ,t    c         s` s   |  ] } | j  d  ƒ Vq d S(   t   =N(   t   split(   t   .0t   pair(    (    s:   lib/python2.7/site-packages/distributed/cli/dask_worker.pys	   <genexpr>5  s    t   worker_portt   listen_addresst   nannyt   service_portss   scheduler-addresssI   Need to provide scheduler address like
dask-worker SCHEDULER_ADDRESS:8786s'   Can not specify both interface and hostt   st   scheduler_filet   ncorest   servicest   loopt	   resourcest   memory_limitt	   reconnectt	   local_dirt   death_timeoutt   preloadR$   t   securityt   contact_addresst   namet   -c          3` s1   ˆ r- g  ˆ  D] }  |  j  d d ƒ ^ q Vn  d  S(   Nt   timeouti   (   t   close(   t   n(   t   nanniesR;   (    s:   lib/python2.7/site-packages/distributed/cli/dask_worker.pyt	   close_allt  s    c         ` s   t  j d |  ƒ ˆ  ƒ  d  S(   Ns   Exiting on signal %d(   t   loggert   info(   t   signum(   RP   (    s:   lib/python2.7/site-packages/distributed/cli/dask_worker.pyt	   on_signalz  s    c          3` sP   g  ˆ D] }  |  j  ˆ  ƒ ^ q Vx( t d „  ˆ Dƒ ƒ rK t j d ƒ Vq$ Wd  S(   Nc         s` s   |  ] } | j  d  k Vq d S(   t   closedN(   t   status(   R7   RN   (    (    s:   lib/python2.7/site-packages/distributed/cli/dask_worker.pys	   <genexpr>  s    gš™™™™™É?(   t   _startt   allR   t   sleep(   RN   (   t   addrRO   (    s:   lib/python2.7/site-packages/distributed/cli/dask_worker.pyt   run~  s    !t   cleanups
   End worker(1   t   gct   get_thresholdt   set_thresholdR   R   t   Nonet   warningst   warnR	   RQ   t   errorR   R   t   Truet
   ValueErrort   strR   t   opent   writeR,   t   getpidt   atexitt   registert   distributed.bokeh.workerR1   t   ImportErrort   replaceR6   t   dictR   t   floatR   t   currentR   R   t   daskt   configt   getR   R   R   t   rangeR   t	   coroutineR   t   run_synct   KeyboardInterruptR   RR   (-   R   t   hostR9   R:   RI   t
   nanny_portt   nthreadst   nprocsR;   RJ   RC   R/   RD   RB   R   t
   bokeh_portt   local_directoryR>   t	   interfaceRF   RG   R$   t   bokeh_prefixR'   t   tls_certt   tls_keyt   dashboard_addresst   g0t   g1t   g2t   sect   _t   et   portt   fR0   R@   R1   t   resultRA   t   kwargst   tt   iRT   R[   (    (   RZ   RP   RO   R;   R/   s:   lib/python2.7/site-packages/distributed/cli/dask_worker.pyt   main&   sÆ    ­	
		  c           C` s   t  ƒ  t ƒ  d  S(   N(   R
   R   (    (    (    s:   lib/python2.7/site-packages/distributed/cli/dask_worker.pyt   goŽ  s    t   __main__(:   t
   __future__R    R   R   Rj   t   loggingR]   R,   t   sysR   Ra   t   clickRr   t   distributedR   R   t   distributed.utilsR   R   t   distributed.workerR   t   distributed.securityR	   t   distributed.cli.utilsR
   R   R   t   distributed.commR   t   distributed.preloadingR   t   distributed.proctitleR   R   t   toolzR   t   tornado.ioloopR   R   t   tornadoR   t	   getLoggerRQ   t   PathRd   t   pem_file_option_typet   commandRo   t   argumentRf   t   Falset   optionR`   t   intt   UNPROCESSEDR   R‘   t   __name__(    (    (    s:   lib/python2.7/site-packages/distributed/cli/dask_worker.pyt   <module>   s  xÚ	