小编tsa*_*sch的帖子

仅在某些异常时重试 Airflow 任务实例

仅针对某些故障/异常重试 Airflow 运算符的最佳方法是什么?

例如,假设我有一个 Airflow 任务,该任务依赖于外部服务的可用性。如果该服务在任务执行期间变得不可用,我想稍后重试(最多重试 3 次)。对于其他失败我不想重试。

我当前的方法是通过解析来使用on_failure_callback和操作context["ti"].task.retries所需的异常context["exception"],但我认为这很混乱且难以理解。有更好的选择吗?

python airflow google-cloud-composer

9
推荐指数
1
解决办法
3398
查看次数

为分类数据绘制多个条形图

我正在寻找一种在matplotlib中为每个值绘制多个条形图的方法.为数字数据,这可以是将偏移到X数据来实现,如例如描述在这里:

import numpy as np
import matplotlib.pyplot as plt

X = np.array([1,3,5])
Y = [1,2,3]
Z = [2,3,4]

plt.bar(X - 0.4, Y) # offset of -0.4
plt.bar(X + 0.4, Z) # offset of  0.4
plt.show()
Run Code Online (Sandbox Code Playgroud)

多个数字数据条

plt.bar()(和ax.bar())也自动处理分类数据:

X = ['A','B','C']
Y = [1,2,3]

plt.bar(X, Y)
plt.show()
Run Code Online (Sandbox Code Playgroud)

类别处理

在这里,显然不可能添加偏移量,因为类别不与轴上的值直接关联.我可以手动为类别分配数值,并在x轴上设置标签plt.xticks():

X = ['A','B','C']
Y = [1,2,3]
Z = [2,3,4]
_X = np.arange(len(X))

plt.bar(_X - 0.2, Y, 0.4)
plt.bar(_X + 0.2, Z, 0.4)
plt.xticks(_X, X) # set labels …
Run Code Online (Sandbox Code Playgroud)

python matplotlib

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

Airflow:通过 DagRun.get_task_instances() 检索任务实例后,“TaskInstance”对象没有属性“task”

我正在运行composer-1.16.6-airflow-1.10.15。

对于每日计划的 DAG,我想编写一个自定义on_failure_notification,仅在任务实例连续多天失败时发送通知。我的计划是获取 dag 运行的失败任务实例并检查每个最后成功执行日期:

def my_on_failure_notification(context):
    failed_tis = context["dag_run"].get_task_instances(state=State.FAILED)
    tis_to_notify_about = [ti.task_id for ti in failed_tis if ti.previous_execution_date_success < days_ago(2)]
Run Code Online (Sandbox Code Playgroud)

此操作失败并出现以下跟踪:

[...]
File "/home/airflow/gcs/dags/xxx.py", line 94, in my_on_failure_notification
ti.task_id for ti in failed_tis if ti.previous_execution_date_success < days_ago(2)
File "/usr/local/lib/airflow/airflow/models/taskinstance.py", line 625, in previous_execution_date_success
prev_ti = self._get_previous_ti(state=State.SUCCESS)
File "/usr/local/lib/airflow/airflow/utils/db.py", line 74, in wrapper
return func(*args, **kwargs)
File "/usr/local/lib/airflow/airflow/models/taskinstance.py", line 582, in _get_previous_ti
dag = self.task.dag
AttributeError: 'TaskInstance' object has no attribute 'task'
Run Code Online (Sandbox Code Playgroud)

我认为发生这种情况是因为 TI 是作为 SQLAlchemy 模型检索的,该模型不包含该task …

python airflow google-cloud-composer

5
推荐指数
0
解决办法
3476
查看次数

检查 Plon PythonScript 中的类型

我正在尝试检查 Plone Products.PythonScript 中变量的类型。我尝试了这段代码:

if isinstance(var, list):
    do(sth)
Run Code Online (Sandbox Code Playgroud)

不幸的是,“list”和“type”在 PythonScript 中受到限制。我收到这个错误:

 TypeError: isinstance() arg 2 must be a class, type, or tuple of classes and types
Run Code Online (Sandbox Code Playgroud)

是否有可能检查我的变量的类型?

python zope plone

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

在javascript中使用TAL:已定义的变量

我正在为基于plone的网站创建页面模板.我使用模板属性语言定义了一些变量:

<tal:macro metal:define-macro="sample" tal:define="var python: here.getThisVar();">
Run Code Online (Sandbox Code Playgroud)

现在我想var在extern javascript文件中使用,我通过单击模板中的按钮来调用.如何传输我的变量,我可以在我的javascript文件中使用它?

javascript zope plone

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

QHeaderView:根据列的内容大小进行 Stretch 或 ResizeToContents

我有一个 QTableWidget,最后一列包含可变长度的文本。

我想根据该部分的大小将 QHeaderView 的最后一部分拉伸或调整为其内容的大小。如果内容大小不超过小部件中的剩余空间,我想拉伸它(以防止小部件中出现丑陋、未填充的空间)。我可以通过使用setStretchLastSection(True). 但是,如果内容大小超过拉伸的列,则内容的最后部分将被剪切,因为该列未调整大小。QHeaderViewResizeToContents为这种情况提供了ResizeMode,但在内容较短的情况下,这会使小部件具有未填充的空间。

我想过手动调整列大小。不幸的是,由于sectionSizeFromContents()受保护,我无法直接访问内容大小。我想我可以继承 QHeaderView 并重新实现它,但我想知道是否有更好的解决方案。

qt pyqt qheaderview qt5 pyqt5

3
推荐指数
1
解决办法
3385
查看次数