在Airflow中是否有任何方法可以创建工作流程,以便任务数量B.*在任务A完成之前是未知的?我查看了子标记,但看起来它只能用于必须在Dag创建时确定的一组静态任务.
dag会触发工作吗?如果是这样,请你举个例子.
我有一个问题是,在任务A完成之前,无法知道计算任务C所需的任务B的数量.每个任务B.*将需要几个小时来计算,不能合并.
|---> Task B.1 --|
|---> Task B.2 --|
Task A ------|---> Task B.3 --|-----> Task C
| .... |
|---> Task B.N --|
Run Code Online (Sandbox Code Playgroud)
我不喜欢这个解决方案,因为我必须创建一个阻塞的ExternalTaskSensor,所有的任务B.*需要2到24小时才能完成.所以我认为这不是一个可行的解决方案.当然有一种更简单的方法吗?或者Airflow不是为此而设计的?
Dag 1
Task A -> TriggerDagRunOperator(Dag 2) -> ExternalTaskSensor(Dag 2, Task Dummy B) -> Task C
Dag 2 (Dynamically created DAG though python_callable in TriggerDagrunOperator)
|-- Task B.1 --|
|-- Task B.2 --|
Task Dummy A --|-- Task B.3 --|-----> Task Dummy B
| .... |
|-- Task B.N --|
Run Code Online (Sandbox Code Playgroud)
我对itertools中所有有趣的迭代器非常着迷,但我遇到的一个困惑是这两个函数之间的区别以及为什么存在chain.from_iterable.
from itertools import chain
def foo(n):
for i in range(n):
yield [i, i**2]
chain(*foo(5))
chain.from_iterable(foo(5))
Run Code Online (Sandbox Code Playgroud)
这两个功能有什么区别?
所以我希望打包一个需要科学库的相当复杂的 python 应用程序。这个问题有点类似于stackoverflow pip vs conda 的讨论,但它没有详细介绍自 2016 年以来 linux 轮子的二进制打包可用的差异。 我已经看到pypi/cryptography使用 manylinux 并通过 pypi 轮子分发二进制文件。另一个包 mpi4py 只发布 conda 的二进制包,只是因为困难。甚至可以说二元轮不适合这项任务。
通过轮子共享库打包与 conda 相比是什么样的?截至 2018 年,通过轮子共享库打包是否值得?
我的包裹需要
我的所有静态二进制文件大约为 100Mb,因此它确实需要很多共享库。许多我还指出,即使对我自己来说,安装也是一种巨大的痛苦......我无法想象尝试自己安装它的人会是什么样子。到目前为止,我有一个可用的 docker 容器。
我的问题涉及链接app-route.最初我认为这个bug来自我的应用程序,但我用一个简单的例子重新创建它.问题来自于首先访问与子路由匹配的URL,然后更改路由以使其与子路由不匹配.
我不能使用Polymer cdn基本标记,因为它会改变路由的行为.如果你复制并粘贴代码运行bower init; bower install --save PolymerElements/app-route; python3 -m http.server;
它应该运行示例代码.
#/tree/maple
导致routeData.collection ='tree',subrouteData.uuid ='maple'.这是正确的,并且表现如预期#/tree
导致routeData.collection ='tree',subrouteData.uuid ='maple'.注意没有变化请注意,即使更改为子路径的路径#/tree
未更新.这是我理解的问题app-route
吗?
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<link rel="import" href="./bower_components/app-route/app-route.html">
<link rel="import" href="./bower_components/app-route/app-location.html">
<link rel="import" href="./bower_components/polymer/polymer.html">
</head>
<body>
<x-example></x-example>
</body>
</html>
<dom-module id="x-example">
<template>
<style>
</style>
<app-location route="{{route}}" use-hash-as-path></app-location>
<app-route route="{{route}}" pattern="/:collection" data="{{routeData}}" tail="{{subroute}}"></app-route>
<app-route route="{{subroute}}" pattern="/:uuid" data="{{subrouteData}}"></app-route>
<h1>Path</h1>
<p>route: [[routeData.collection]]</p>
<p>subroute: [[subrouteData.uuid]]</p>
Visit: [In Order]
<a href="#/tree/maple">[2] …
Run Code Online (Sandbox Code Playgroud)我正在尝试开始使用python登录,并且已经阅读了多个博客。对我造成困扰的一个问题是是按功能还是按模块创建记录器。在本博客:Python中的良好日志记录实践中,建议为每个函数获取一个日志记录器。例如:
import logging
def foo():
logger = logging.getLogger(__name__)
logger.info('Hi, foo')
class Bar(object):
def __init__(self, logger=None):
self.logger = logger or logging.getLogger(__name__)
def bar(self):
self.logger.info('Hi, bar')
Run Code Online (Sandbox Code Playgroud)
给出的理由是
logging.fileConfig和logging.dictConfig默认情况下禁用现有的记录器。因此,文件中的那些设置将不会应用于您的记录器。最好在需要时获取记录器。创建或获取记录器很便宜。
推荐的阅读方式如下所示。该博客指出了这种方法"looks harmless, but actually, there is a pitfall"
。
import logging
logger = logging.getLogger(__name__)
def foo():
logger.info('Hi, foo')
class Bar(object):
def bar(self):
logger.info('Hi, bar')
Run Code Online (Sandbox Code Playgroud)
我发现前一种方法很繁琐,因为我必须记住要在每个函数中使用记录器。另外,使记录器具有每个功能肯定比每个模块一次昂贵。博客的作者提倡非问题吗?遵循日志记录最佳做法是否可以避免此问题?
描述
我花了大约一个小时试图找出 numpy 数组构造错误。我一定没有正确使用 numpy dtypes,但错误消息的描述性不够,并且没有提供足够好的堆栈跟踪来查找错误。
创建相同错误的简化示例:
import numpy as np
names = ['id', 'x']
formats = [np.int64, np.float64]
np.array([1, 1.0], dtype={'names': names, 'formats': formats})
Run Code Online (Sandbox Code Playgroud)
以下代码会导致错误
----> 1 np.array([1, 1.0], dtype={'names': names, 'formats': formats})
TypeError: a bytes-like object is required, not 'int'
Run Code Online (Sandbox Code Playgroud)
所以我知道错误是由于第一个元素是 int 而发生的,但为什么它需要一个类似字节的对象?
答:这与第一个元素是 int 无关。该列表需要是一个元组,如下所示。
python ×5
airflow ×1
conda ×1
conda-build ×1
javascript ×1
logging ×1
numpy ×1
polymer ×1
polymer-1.0 ×1
python-wheel ×1
workflow ×1