在代码更改时自动重新加载 Dask worker 容器
Reload Dask worker containers automatically on code change
我有下面提交 N 个工人的 Dask 代码,其中每个工人都在一个 Docker 容器中实现:
default_sums = client.map(process_asset_defaults, build_worker_args(req, numWorkers))
future_total_sum = client.submit(sum, default_sums)
total_defaults_sum = future_total_sum.result()
其中 process_asset_defaults
是 worker 中的一个方法。
问题是在开发环境中,当我更改 worker 的代码时,我需要手动重启所有容器才能使更改生效。
有没有办法在不重启 worker 的情况下用新代码重新加载 worker?
注意:代码在Docker卷中,我直接在Visual Studio代码卷中更改。
你可以用文件的当前内容创建一个变量,然后循环检查文件内容是否不等于之前的内容,如果不是你可以做一些事情
before = open("/code/app/worker.py").read()
while True:
current = open("/code/app/worker.py").read()
if current != before:
dostuff()
before = current
如果改变的代码是函数的内容,那么可以使用autoreload
:
import importlib
importlib.reload(process_asset_defaults) # if this is the function that needs updating
我有下面提交 N 个工人的 Dask 代码,其中每个工人都在一个 Docker 容器中实现:
default_sums = client.map(process_asset_defaults, build_worker_args(req, numWorkers))
future_total_sum = client.submit(sum, default_sums)
total_defaults_sum = future_total_sum.result()
其中 process_asset_defaults
是 worker 中的一个方法。
问题是在开发环境中,当我更改 worker 的代码时,我需要手动重启所有容器才能使更改生效。
有没有办法在不重启 worker 的情况下用新代码重新加载 worker?
注意:代码在Docker卷中,我直接在Visual Studio代码卷中更改。
你可以用文件的当前内容创建一个变量,然后循环检查文件内容是否不等于之前的内容,如果不是你可以做一些事情
before = open("/code/app/worker.py").read()
while True:
current = open("/code/app/worker.py").read()
if current != before:
dostuff()
before = current
如果改变的代码是函数的内容,那么可以使用autoreload
:
import importlib
importlib.reload(process_asset_defaults) # if this is the function that needs updating