小编mic*_*ich的帖子

在共享库中登录 Python 的最佳实践

简而言之,我编写 ETL 管道。它们通常在高级脚本中描述。在其中,我使用不同的内部库(我们管理它们)来提供实用功能、工具或内部数据结构。

在处理从不同存储库导入的多个包时,有关日志记录的常见最佳实践是什么?

我的问题是:

1)我应该将日志放入库中吗?或者仅在顶级脚本中?

一方面,在某些库函数/类中显示一些信息可能很有用。另一方面,它强制库客户端使用特定的记录器。

我查了几个开源项目,好像根本没有日志。

2)如果我们确实将日志放入所有共享库中,那么Python中向所有内容传递唯一记录器的最佳实践是什么?

我希望我的日志记录格式和策略在每个库调用中保持一致,因为所有内容都作为“整体”的一部分运行。我应该在主脚本中初始化记录器并在我创建的每个对象中传递相同的记录器吗?对我来说这似乎是多余的。我看到了另一种模式,其中所有需要日志记录的类都将从日志记录类继承。在我看来,它可能会过度杀伤并使整体架构变得复杂。

我在另一个 stackoverflow 中读到,实际上每个记录器都是父包 logger 的子项。当包来自不同的存储库时如何应用它?

谢谢

python logging dependency-management

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

使用 Pipenv 安装 Airflow 1.10.10

有没有人在用 pipenv 安装 apache-airflow 1.10.10 时遇到问题?当我尝试使用 pipenv install 安装它时,出现以下错误:

There are incompatible versions in the resolved dependencies:
  marshmallow<3.0.0,>=2.18.0 (from flask-appbuilder==2.3.4->apache-airflow==1.10.10->-r /var/folders/rl/p0x650cn1lx6f7syttzvh2hh0000gn/T/pipenvykrgd_0krequirements/pipenv-lwhwxrq7-constraints.txt (line 2))
  marshmallow>=2.0.0 (from marshmallow-enum==1.5.1->flask-appbuilder==2.3.4->apache-airflow==1.10.10->-r /var/folders/rl/p0x650cn1lx6f7syttzvh2hh0000gn/T/pipenvykrgd_0krequirements/pipenv-lwhwxrq7-constraints.txt (line 2))
  marshmallow>=3.0.0 (from marshmallow-sqlalchemy==0.24.0->flask-appbuilder==2.3.4->apache-airflow==1.10.10->-r /var/folders/rl/p0x650cn1lx6f7syttzvh2hh0000gn/T/pipenvykrgd_0krequirements/pipenv-lwhwxrq7-constraints.txt (line 2))
Run Code Online (Sandbox Code Playgroud)

据我了解,Airflow 的子依赖项需要版本冲突的棉花糖包:棉花糖<3.0.0 和棉花糖>=3.0.0。我不明白的是它曾经有效。Airflow 依赖与自身冲突是否正常?在没有 Pipenv 的 virtualenv 上执行 pip install apache-airflow==1.10.10 时,我没有问题。

任何见解?谢谢

dependencies dependency-management airflow pipenv

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