小编yee*_*379的帖子

使用TriggerDagRunOperator多次运行另一个DAG

我有一个DAG(DAG1),我复制了一堆文件.然后,我想为每个复制的文件启动另一个DAG(DAG2).由于复制的文件数量因DAG1运行而异,我希望基本上循环遍历文件并使用适当的参数调用DAG2.

例如:

with DAG( 'DAG1',
        description="copy files over",
        schedule_interval="* * * * *",
        max_active_runs=1
    ) as dag:


    t_rsync = RsyncOperator( task_id='rsync_data',
        source='/source/',
        target='/destination/' )

    t_trigger_preprocessing = TriggerDagRunOperator( task_id='trigger_preprocessing',
        trigger_daq_id='DAG2',
        python_callable=trigger

    )

    t_rsync >> t_trigger_preprocessing
Run Code Online (Sandbox Code Playgroud)

我希望使用python_callable trigger从中提取相关的xcom数据t_rsync,然后触发DAG2; 但我不清楚如何做到这一点.

我更愿意在这里调用DAG2的逻辑来简化DAG2的内容(并提供堆栈原理图max_active_runs)

call directed-acyclic-graphs airflow apache-airflow

8
推荐指数
1
解决办法
1605
查看次数

python socket recv()和信号

我有一个简单的(非线程)脚本,它在套接字上侦听数据,分析它并使用内部SIGALRM的命令在预定义的计时器内部发送电子邮件.

问题是在recv()循环期间,出现的情况SIGALRM似乎提高了

socket.error: [Errno 4] Interrupted system call
Run Code Online (Sandbox Code Playgroud)

因此终止了该计划.

我可以recv()使用try/except块包装,但我想知道在此期间我是否会丢失任何数据,或者缓冲区是否会阻止丢失.

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind((host, port))
while True:
    try:
        data = s.recv(2048)
    except socket.error, e:
        pass
    yield data
s.close()
return
Run Code Online (Sandbox Code Playgroud)

python sockets signals alarm

6
推荐指数
1
解决办法
3831
查看次数

kubeadm / kubectl / kube-apiserver打开功能门

我正在尝试在kubernetes v1.9.2中测试本地持久卷

从我收集的信息中(我可能是错的!)我不能使用kubeadm这些功能门:

$ sudo kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.2", GitCommit:"5fa2db2bd46ac79e5e00a4e6ed24191080aa463b", GitTreeState:"clean", BuildDate:"2018-01-18T09:42:01Z", GoVersion:"go1.9.2", Compiler:"gc", Platform:"linux/amd64"}

$ kubeadm init --help
...
      --feature-gates string                    A set of key=value pairs that describe feature gates for various features. Options are:
        CoreDNS=true|false (ALPHA - default=false)
        DynamicKubeletConfig=true|false (ALPHA - default=false)
        SelfHosting=true|false (ALPHA - default=false)
        StoreCertsInSecrets=true|false (ALPHA - default=false)
...
Run Code Online (Sandbox Code Playgroud)

太...我做了一个普通的kubeadm初始化,然后继续破解:

/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
Run Code Online (Sandbox Code Playgroud)

Environment="KUBELET_FEATURE_GATES_ARGS=--feature-gates=PersistentLocalVolumes=true,VolumeScheduling=true,MountPropagation=true"
ExecStart=
ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_SYSTEM_PODS_ARGS $KUBELET_NETWORK_ARGS $KUBELET_DNS_ARGS $KUBELET_AUTHZ_ARGS $KUBELET_CADVISOR_ARGS $KUBELET_CGROUP_ARGS $KUBELET_CERTIFICATE_ARGS $KUBELET_EXTRA_ARGS $KUBELET_FEATURE_GATES_ARGS
Run Code Online (Sandbox Code Playgroud)

并重新加载/重启kubelet …

alpha local kubernetes persistent-volumes

6
推荐指数
1
解决办法
5435
查看次数

python configparser写入默认部分

我在python中使用configparser模块来读写一些.ini样式文件.我希望能够创建和写入该DEFAULTS部分,但是,似乎硬编码不允许创建这样的部分.

可能吗?甚至建议这样做?

python configparser

5
推荐指数
1
解决办法
3620
查看次数

无法登录私人docker注册表

我通过以下方式设置了私人码头注册表(v2):

docker run -d -p 4000:5000 --restart=always --name registry \
  -v `pwd`/auth:/auth \
  -e "REGISTRY_AUTH=htpasswd" \
  -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
  -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
  -v `pwd`/certs:/certs \
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
  -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
  registry:2
Run Code Online (Sandbox Code Playgroud)

我确保在所有机器上手动覆盖注册表dns:

# cat /etc/hosts | grep myregistrydomain.com
172.23.67.28 myregistrydomain.com
Run Code Online (Sandbox Code Playgroud)

certs为假主机名创建了一个自签名证书,myregistrydomain.com并使用以下内容添加了一个简单的身份验证:

mkdir auth
sudo docker run --entrypoint htpasswd registry:2 -Bbn kolla kolla-pass > auth/htpasswd
Run Code Online (Sandbox Code Playgroud)

我然后复制.crt到两个/etc/docker/certs.d/myregistrydomain.com\:4000/ca.crt并在所有机器上/etc/pki/ca-trust/source/anchors/myregistrydomain.com.crt运行update-ca-trust并重新启动docker(centos7).

在主持人A上,我得到:

# docker login --username=kolla --password=kolla-pass myregistrydomain.com:4000
Login Succeeded
Run Code Online (Sandbox Code Playgroud)

但是,在主机B上,我得到:

# …
Run Code Online (Sandbox Code Playgroud)

registry ssl login docker docker-registry

5
推荐指数
1
解决办法
2072
查看次数

无法通过请求 nvidia.com/gpu 来安排 kubernetes pod

我已经能够让 kubernetes 识别我的节点上的 GPU:

$ kubectl get node MY_NODE -o yaml
...
allocatable:
  cpu: "48"
  ephemeral-storage: "15098429006"
  hugepages-1Gi: "0" 
  hugepages-2Mi: "0"
   memory: 263756344Ki
  nvidia.com/gpu: "8"
  pods: "110"
capacity:
  cpu: "48"
  ephemeral-storage: 16382844Ki
  hugepages-1Gi: "0"
  hugepages-2Mi: "0"
  memory: 263858744Ki
  nvidia.com/gpu: "8"
  pods: "110"
...
Run Code Online (Sandbox Code Playgroud)

我旋转一个吊舱

Limits:
  cpu:             2
  memory:          2147483648
  nvidia.com/gpu:  1
Requests:
  cpu:             500m
  memory:          536870912
  nvidia.com/gpu:  1
Run Code Online (Sandbox Code Playgroud)

但是,pod 仍处于 PENDING 状态:

Insufficient nvidia.com/gpu.
Run Code Online (Sandbox Code Playgroud)

我正确指定了资源吗?

gpu nvidia kubernetes

5
推荐指数
1
解决办法
3217
查看次数

使用 kustomize 修改nodeSelector的

如果能够在更高级别定义一种方法来确定一组 pod 应该在其上运行的一组节点,对我来说将会非常有用。

有没有办法使用 kustomize 以便我可以指定部署应具有哪些 nodeSelector?

kubernetes kustomize

5
推荐指数
2
解决办法
6755
查看次数

rails变量名称的引用模型

我有一些代码使用字符串动态确定要使用的模型类和find_by()的字段.但是,我很难用这些变量来获取模型实例.具体来说,我有

class Item
  include MongoMapper::Document
  key :my_variable, String
Run Code Online (Sandbox Code Playgroud)

在我的代码中我有

m = "Item"
f = "my_variable"
Run Code Online (Sandbox Code Playgroud)

我希望能够

i = m.find_by_my_variable( f )
result = i[f]
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏!

model ruby-on-rails variable-assignment

4
推荐指数
1
解决办法
977
查看次数

模块同名时导入python包

我有一个模块blah.time,我在正常的时间和日期操作周围进行一些健全性检查和包装函数:

import time

def sleep(n):
    time.sleep(n)
Run Code Online (Sandbox Code Playgroud)

当我调用时sleep,它只会抛出一个最大的递归错误.我猜测命名空间是错误的,所以我尝试使用import time as _time,但我仍然得到相同的错误.

如何time从我自己的模块中引用系统模块以防止此命名空间冲突?

python namespaces module

4
推荐指数
1
解决办法
4854
查看次数

集群上活动内容与 kustomize 上活动内容之间的差异

kustomize的文档提供了一个很好的单行代码来比较两种不同的覆盖...

diff \
  <(kustomize build $OVERLAYS/staging) \
  <(kustomize build $OVERLAYS/production)
Run Code Online (Sandbox Code Playgroud)

有没有办法做同样的事情,但针对特定 kubernetes 命名空间中运行的内容以及磁盘上定义的覆盖层?

更具体地说,知道kubectl apply -k .不实际做会做什么?using--dry-run只是说吐出对象列表而不是真正的差异。

diff yaml kubernetes kustomize

4
推荐指数
1
解决办法
4847
查看次数