B
    t\                 @   sn  d dl mZ d dlZd dlmZ d dl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mZ d d
lmZ ejZe Ze Ze ejdedddejdedddejded ddejddddejddeddejddddejddddejd ed!d"dejd#ed$d%dejd&edd'dd(d) Zd*d+ Z e!d,krje   dS )-    )partialN)MPI)IOLoop)gen)warn)	SchedulerNannyWorker)BokehWorker)check_python_3uri_from_host_port)get_ip_interfacez--scheduler-filezscheduler.jsonz0Filename to JSON encoded scheduler information. )typedefaulthelpz--interfacez&Network interface like 'eth0' or 'ib0'z
--nthreadszNumber of threads per worker.z--memory-limitautozxNumber of bytes before spilling data to disk. This can be an integer (nbytes) float (fraction of total memory) or 'auto')r   r   z--local-directory zDirectory to place worker files)r   r   r   z--scheduler/--no-schedulerTz^Whether or not to include a scheduler. Use --no-scheduler to increase an existing dask clusterz--nanny/--no-nannyz-Start workers in nanny process for managementz--bokeh-portiS"  z!Bokeh port for visual diagnosticsz--bokeh-worker-portiU"  z*Worker's Bokeh port for visual diagnosticsz--bokeh-prefixzPrefix for the bokeh appc
          	      s.  |rt |}
nd }
tdkr|ryddlm} W n tk
rF   i }Y nX d|ft||di}t| t|d}t|
d d |	  zt	  t
  W d |  X n|rtnt}|| t|rtnd ||d|	fti|dt|
d d tj fdd	}zt| t
  W d X tjfd
d}t| d S )Nr   )BokehSchedulerZbokeh)prefix)scheduler_fileloopservicesiR"  )r   r   nameZncoresZ	local_dirr   memory_limitc               3   s,     V  xjdkr&tdV  qW d S )Nclosedg?)Z_startZstatusr   Zsleep )addrworkerr   7lib/python3.7/site-packages/distributed/cli/dask_mpi.pyrunQ   s    zmain.<locals>.runc               3   s    j ddV  d S )N   )Ztimeout)Z_closer   )r   r   r   close]   s    zmain.<locals>.close)r   rankZdistributed.bokeh.schedulerr   ImportErrorr   r   r   r   startr!   stopr   r	   r
   r   	coroutineZrun_sync)r   Z	interfaceZnthreadsZlocal_directoryr   Z	schedulerZ
bokeh_portZbokeh_prefixZnannyZbokeh_worker_portZhostr   r   Wr   r!   r   )r   r   r   main   sF    







r(   c               C   s   t   td t  d S )NzThe dask-mpi command line utility in the `distributed` package is deprecated.  Please install the `dask-mpi` package instead. More information is available at https://mpi.dask.org)r   r   r(   r   r   r   r   god   s    r)   __main__)"	functoolsr   ZclickZmpi4pyr   Ztornado.ioloopr   Ztornador   warningsr   Zdistributedr   r   r	   Zdistributed.bokeh.workerr
   Zdistributed.cli.utilsr   r   Zdistributed.utilsr   Z
COMM_WORLDZcommZGet_rankr"   r   ZcommandZoptionstrintr(   r)   __name__r   r   r   r   <module>   sH   






$8	
