小编Kim*_*ran的帖子

CasperJs then()是否等待上一个函数中发出的事件?

我很好奇CasperJS如何处理与调用堆栈有关的事件.

假设我们有一些代码:

casper.on('foo', function() {
    this.wait(60000);
    this.echo('foo');
});


casper.start('http://www.stackoverflow.com', function() {
    this.echo('start');
    this.emit('foo');
});


casper.then(function() {
    this.echo('done');
});

casper.run();
Run Code Online (Sandbox Code Playgroud)

我知道then()将等待检查3个标志:pendingWait,loadInProgress和navigationRequested.打印出调用堆栈会将emit调用显示在函数start()中,因此在事件结束之前start()不会被视为已完成?即,然后()等待事件结束

我等了60秒测试了这个,我确实得到了输出:

start
foo
done
Run Code Online (Sandbox Code Playgroud)

虽然我不确定超过某个超时是否会触发下一个().

javascript events callstack casperjs

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

dagrun_timeout 会在回填/清除旧 DAG 时产生干扰吗?

我有一个如下所示的 DAG,dagrun_timeout设置为 4 小时。当我进入 UI 并清除从 start_date 到现在的所有任务时,所有 DAG 都设置为运行状态。

4 小时后,任何未将自身标记为成功的 DAG 将被标记为失败,即使它们尚未实际启动。我想知道这是否是有意的行为。

如果我想以这种方式重新运行 DAG,我是否应该删除dagrun_timeout并在任务级别设置超时?或者airflow backfill如果我想在不dagrun_timeout干扰的情况下重新运行所有 DAG,我应该使用它吗?

理想情况下,我希望能够使用 UI,因为其他团队成员希望重新运行 DAG。


default_args = {
    'owner': 'airflow',
    'depends_on_past': False,
    'start_date': datetime(2019, 5, 1),
    'email': ['lol@example.com'],
    'email_on_failure': True,
    'email_on_retry': False,
    'retries': 1,
    'retry_delay': timedelta(minutes=1),
}


dag = DAG(
    dag_id='example_dag',
    default_args=default_args,
    max_active_runs=8,
    schedule_interval='15 * * * *',
    dagrun_timeout=timedelta(minutes=60*4),
)
Run Code Online (Sandbox Code Playgroud)

airflow airflow-scheduler

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