小编Dot*_*tan的帖子

Zod:使用现有类型创建模式

我有一个端点应该获取一个method应该符合 Axios type 的参数Method

如何使用 Zod 创建一个架构来验证该值是否使用该类型Schema

import { Method } from 'axios';

const Schema = zod.object({
  method: zod.someHowUseTheTypeFrom(Method),
});
Run Code Online (Sandbox Code Playgroud)

MethodAxios 包中的类型是:

export type Method =
  | 'get' | 'GET'
  | 'delete' | 'DELETE'
  | 'head' | 'HEAD'
  | 'options' | 'OPTIONS'
  | 'post' | 'POST'
  | 'put' | 'PUT'
  | 'patch' | 'PATCH'
  | 'purge' | 'PURGE'
  | 'link' | 'LINK'
  | 'unlink' | 'UNLINK'
Run Code Online (Sandbox Code Playgroud)

typescript zod

27
推荐指数
2
解决办法
6万
查看次数

创建一个正常运行的Response对象

出于测试目的,我正在尝试在python中创建一个Response()对象,但事实证明它听起来更难.

我试过这个:

from requests.models import Response

the_response = Response()
the_response.code = "expired"
the_response.error_type = "expired"
the_response.status_code = 400
Run Code Online (Sandbox Code Playgroud)

但是当我试图the_response.json()得到一个错误,因为函数试图得到len(self.content)并且a.content为空.所以我设置,a._content = "{}"但后来我得到一个编码错误,所以我必须改变a.encoding,但然后它无法解码内容....这一直在继续.有没有一种简单的方法来创建一个功能齐全且具有任意status_code和内容的Response对象?

python python-requests

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

气流:无法找到dag_id

我在不同的AWS机器上运行气流服务器和工作人员.我已经同步了它们之间airflow initdb的dags 文件夹,在两者上运行,并检查当我运行时dag_id是相同的airflow list_tasks <dag_id>

当我运行调度程序和worker时,我在worker上遇到了这个错误:

airflow.exceptions.AirflowException:找不到dag_id :. dag不存在或者无法解析.[...]命令...-- local -sd /home/ubuntu/airflow/dags/airflow_tutorial.py'

似乎问题是路径错误(/home/ubuntu/airflow/dags/airflow_tutorial.py),因为正确的路径是/ home/hadoop/...

在服务器机器上,路径是使用ubuntu,但在两个配置文件上它都是简单的 ~/airflow/...

是什么让工人看到这条路而不是正确的呢?

我怎么告诉它看它自己的家庭目录?

编辑:

  • 这不太可能是配置问题.我跑grep -R ubuntu了,唯一出现在日志中
  • 当我在一台计算机上运行相同的ubuntu东西时,一切正常.这使我相信,由于某种原因,气流为工人提供了完成任务的全部途径

airflow

11
推荐指数
3
解决办法
9725
查看次数

使用气流将任务分配给特定机器

我是Airflow的新手.

我有一个DAG,其中包含一个应该在特定机器上运行的任务(在我的情况下是EMR集群).如何告诉气流在哪里运行特定任务,以便每次运行它只会在该机器上执行此操作?

airflow

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

xargs-将参数放在命令中的其他位置

假设我想编写一个脚本,ls为每个文件名添加一个前缀。我试过了

ls | xargs -n 1 echo prefix_
Run Code Online (Sandbox Code Playgroud)

但是结果是

prefix_ first_file
prefix_ second_file
...
Run Code Online (Sandbox Code Playgroud)

如何删除前缀和文件名之间的空格?即我如何使xargs将变量放在命令后,没有空格?(或在其他任何地方)

xargs

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

pytest:设置主要功能测试的命令行参数

我在python中有一个main()函数,它获取命令行参数.有没有办法让我为这个函数编写pytest测试并在代码中定义参数?

例如

def main():
    # argparse code
    args, other = arg_parser.parse_known_args()
    return args.first_arg


def test_main():
    res = main() # call with first_arg = "abc"
    assert(res == "abc")
Run Code Online (Sandbox Code Playgroud)

pytest argparse

7
推荐指数
3
解决办法
3814
查看次数

protobuf golang从不同目录导入.proto和.pb.proto

我有一个名为 myProtos 的库,如下所示

\n\n
.\n|-- proto\n|---- hello.proto\n|\n|-- generated\n\xe2\x94\x94---- hello.pb.go\n
Run Code Online (Sandbox Code Playgroud)\n\n

我有一个外部的 .proto 文件,example.proto应该导入hello.proto

\n\n

所以文件的顶部看起来像这样:

\n\n
syntax = "proto3";\npackage example;\nimport "path/to/myProtos/proto/hello.proto"\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在,当我编译时example.proto,出现导入错误example.pb.go因为它有导入行 import "path/to/myProtos/proto/hello.pb.go"

\n\n

我尝试添加两个导入路径,但收到“导入但未使用错误”。我还尝试进行相对导入并将两个目录作为标志传递给 protoc,这有效,但我需要 go 文件中的导入路径是绝对的。

\n\n

我如何告诉 protoc go 文件上的路径不同?

\n\n

在这种情况下有更好的“最佳实践”吗?

\n

go protocol-buffers

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

Pythonic编写包装函数的方法

假设我有一个foo获取一些参数的函数

def foo(width, height, depth=0):
    ...
Run Code Online (Sandbox Code Playgroud)

我想编写一个包装器函数来获取所有foo参数并将它们传递给它,例如

def goo(width, height, depth=0):
    ...
    foo(width, height, depth)
    ...
Run Code Online (Sandbox Code Playgroud)

但这很难看,因为我必须重复变量默认值.

在python中执行此操作的惯用方法是什么?

我想到的几个选项:

  1. 传递到goo一个叫做foo_params和调用的字典,foo(**foo_params)但后来很容易出错,因为我不知道所有的参数都在那里

  2. 为foo编写另一个包装器,用于检查具有默认值的参数是否为None,如果是,则不传递它们

  3. 将默认值作为常量,所以我不会重复它们

python

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

在macOS上将TLS 1.0升级到TLS 1.2

我安装某些python软件包时遇到了麻烦,因为我有TLS 1.0版本。如何升级到TLS 1.2?

python -c "import urllib2; import json; print(json.loads(urllib2.urlopen('https://www.howsmyssl.com/a/check').read())['tls_version'])"
TLS 1.0
Run Code Online (Sandbox Code Playgroud)

我的macOS版本:10.13.4(17E202)
python版本:Python 2.7.13
openssl版本:LibreSSL 2.2.7

我试图升级openssl,但它没有升级LibreSSL。我记得一年前我遇到了一些与openssl的问题,我可能已经手动将其链接了,或者::(

python macos openssl tls1.2

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

terraform:对列表执行地图操作?

我有一个地形列表

a = [1,2,3,4]
Run Code Online (Sandbox Code Playgroud)

有没有办法让我*2在列表上应用一个函数(例如),以获得

b = [2,4,6,8]
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种插值语法,也许map(a, _*2),甚至是类似的东西

variable "b" {
   count = "${length(a)}"
   value = "${element(a, count.index)} * 2
}
Run Code Online (Sandbox Code Playgroud)

据我所知,不存在这样的事情。我错过了什么吗?

terraform

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