直接在专用的dask worker上运行任务

Man*_*jan 2 dask dask-distributed

一个简单的代码片段如下:注释后跟###很重要..

from dask.distributed import Client

### this code-piece will get executed on a dask worker.
def task_to_perform():
    print("task in progress.")
    ## do something here..
    print("task is over.!")

### whereas the below code will run on client side, 
### assume on a different node than worker
client= Client("127.0.01:8786")
future = client.submit(task_to_perform)
print("task results::", future.result())
Run Code Online (Sandbox Code Playgroud)

因此执行的控制流程将如下所示:dask-client将任务提交给dask-scheduler,调度程序将根据可用的工作程序调用必须提交给任务的工作者.

但是我们在dask中是否有任何机制可以通过它来绕过dask-scheduler在专用/特定工作者上提交我的任务?

MRo*_*lin 5

您可以使用workers=要提交的关键字选择特定工作人员来运行任务

client.submit(func, *args, workers='tcp://worker-address:port')
Run Code Online (Sandbox Code Playgroud)

您可以通过查看工作人员的日志或致电来获取地址client.scheduler_info().有关该workers=关键字的更多信息,请访问:http://distributed.readthedocs.io/en/latest/locality.html#user-control

请注意,这仍然通过调度程序路由任务.客户端只是告诉调度程序在哪里安排任务.