小编nmi*_*nic的帖子

Python protobuf gRPC生成不存在的依赖项

我正在尝试通过以下方式为我的python代码创建gRPC绑定:

python -m grpc_tools.protoc -I $(pwd)/protos --python_out=./fino/pb2 --grpc_python_out=./fino/pb2 -I=$GOPATH/src -I=$GOPATH/src/github.com/gogo/protobuf/protobuf $(pwd)/protos/*
Run Code Online (Sandbox Code Playgroud)

但是生成的文件具有不存在的依赖关系:

from github.com.gogo.protobuf.gogoproto import gogo_pb2 as github_dot_com_dot_gogo_dot_protobuf_dot_gogoproto_dot_gogo__pb2
Run Code Online (Sandbox Code Playgroud)

稍后用于:

DESCRIPTOR = _descriptor.FileDescriptor(
  name='oracle.proto',
  package='oracle',
  syntax='proto2',
  serialized_pb=_b('\n\x0coracle.proto\x12\x06oracle\x1a-github.com/gogo/protobuf/gogoproto/gogo.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x0btypes.proto\":\n\x0b\x41\x63\x63ountList\x12+\n\x08\x61\x63\x63ounts\x18\x01 \x03(\x0b...')
  ,
  dependencies=[github_dot_com_dot_gogo_dot_protobuf_dot_gogoproto_dot_gogo__pb2.DESCRIPTOR,google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,types__pb2.DESCRIPTOR,])
Run Code Online (Sandbox Code Playgroud)

显然,我无法运行此代码。尝试删除不存在的导入后:

TypeError: Couldn't build proto file into descriptor pool!
Invalid proto descriptor for file "oracle.proto":
  oracle.proto: Import "github.com/gogo/protobuf/gogoproto/gogo.proto" has not been loaded.
Run Code Online (Sandbox Code Playgroud)

我尝试添加

--include_imports --descriptor_set_out=$(pwd)/protos/all.proto  
Run Code Online (Sandbox Code Playgroud)

但我不确定如何将其添加到我的python文件中。我想要的只是我的python代码库中的独立描述。

EDIT1:示例原型文件:

syntax = "proto2";
package etcdserverpb;

import "github.com/gogo/protobuf/gogoproto/gogo.proto";

option (gogoproto.marshaler_all) = true;
option (gogoproto.sizer_all) = true;
option (gogoproto.unmarshaler_all) = true;
option (gogoproto.goproto_getters_all) = false;

message …
Run Code Online (Sandbox Code Playgroud)

python protocol-buffers proto grpc

11
推荐指数
1
解决办法
970
查看次数

如何在Google云构建器中缓存多阶段docker build

我有docker多级构建,例如:

FROM golang:1.7.3
WORKDIR /go/src/github.com/alexellis/href-counter/
RUN go get -d -v golang.org/x/net/html  
COPY app.go .
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .

FROM alpine:latest  
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=0 /go/src/github.com/alexellis/href-counter/app .
CMD ["./app"]  
Run Code Online (Sandbox Code Playgroud)

比我有cloudbuild.yml:

steps:
- name: 'gcr.io/cloud-builders/docker'
  args: ['pull', 'gcr.io/$PROJECT_ID/app:$BRANCH_NAME']
- name: 'gcr.io/cloud-builders/docker'
  args: ['pull', 'gcr.io/$PROJECT_ID/app:latest']
- name: 'gcr.io/cloud-builders/docker'
  args: [
            'build',
            '--cache-from', 'gcr.io/$PROJECT_ID/app:latest',
            '--cache-from', 'gcr.io/$PROJECT_ID/app:$BRANCH_NAME',
            '--build-arg', 'COMMIT_HASH=$COMMIT_SHA',
            '-t', 'gcr.io/$PROJECT_ID/app:$COMMIT_SHA',
            '-f', 'config/dockerfiles/app.dockerfile',
            '.'
        ]
- name: 'gcr.io/cloud-builders/docker'
  args: ["tag", "gcr.io/$PROJECT_ID/app:$COMMIT_SHA", "gcr.io/$PROJECT_ID/app:$BRANCH_NAME"]
- …
Run Code Online (Sandbox Code Playgroud)

docker google-cloud-platform

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

获取支持NA /的布尔型熊猫列可为空

如何创建支持nan / missing值的dtype bool(或int)的pandas数据框列?

当我这样尝试时:

d = {'one' : np.ma.MaskedArray([True, False, True, True], mask = [0,0,1,0]),
'two' : pd.Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
print (df.dtypes)
print (df)
Run Code Online (Sandbox Code Playgroud)

one 隐式转换为对象。同样类似ints

d = {'one' : np.ma.MaskedArray([1,3,2,1], mask = [0,0,1,0]),
'two' : pd.Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
print (df.dtypes)
print (df)
Run Code Online (Sandbox Code Playgroud)

one在这里隐式转换为float64,并且我更喜欢如果我停留在int域中并且不使用其特质来处理浮点算术(在比较时始终具有容差,舍入误差等)。

python boolean pandas na

7
推荐指数
1
解决办法
1940
查看次数

kubernetes 中的可选卷/秘密卷?

如果存在,我想挂载卷。例如:

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: mypod
    image: redis
    volumeMounts:
    - name: foo
      mountPath: "/etc/foo"
  volumes:
  - name: foo
    secret:
      secretName: mysecret
Run Code Online (Sandbox Code Playgroud)

是文档中的示例。但是,如果秘密mysecret不存在,我想跳过安装。那是乐观/可选的挂载点。

现在它会停止,直到创建秘密。

kubernetes

7
推荐指数
1
解决办法
4102
查看次数

Kubernetes 根据副本集中的 pod 数量使用不同的容器参数

我想与工作人员一起扩展应用程序。
可能有 1 个或 100 个工作人员,我希望无缝地扩展它们。
这个想法是使用副本集。然而,由于特定领域的原因,扩展它们的适当方法是让每个工作人员知道其:ID 和工作人员总数。

例如,如果我有 3 个工人,我会这样:

id:0, num_workers:3
id:1, num_workers:3
id:2, num_workers:3
Run Code Online (Sandbox Code Playgroud)

有没有办法使用 kubernetes 来做到这一点?
我在命令行参数中将此信息传递给应用程序,并且我认为将其包含在环境变量中也可以。

尺寸变化可以让所有工人被杀死并产生新的工人。

replicaset kubernetes

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

如何在kubernetes中将secret标记为可选?

来自文档:

秘密必须在作为环境变量在pod中使用之前创建,除非它们被标记为可选.对不存在的秘密的引用将阻止pod启动.

如何将秘密标记为可选?

kubernetes

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

如何在tensorflow中将数据重塑为None?

我在训练期间使用tensorflow运行队列来提供我的数据:

X, Y = tf.train.batch(
           [image, label], 
           batch_size=64 
       )
Run Code Online (Sandbox Code Playgroud)

然而,X,Y的强制形状为[64,32,32,3]和[64,10].在评估期间,我想在整个测试集上运行损失操作,其尺寸为:[10000,32,32,3]和[10000,10].我会在session.run()中使用feed_dict属性用我的值覆盖X,Y,但它们具有不兼容的形状.

我可以以某种方式指示tensorflow忘记第一维,即重塑[64,32,32,3] - > [无,32,32,3]?或者我还有其他选择用另一个值替换X,Y.

整个数据集足够小以适应内存,因此我使用类似的方法,如https://github.com/tensorflow/tensorflow/blob/r0.9/tensorflow/examples/how_tos/reading_data/fully_connected_preloaded.py

python tensorflow

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

如何在protobuff中获取具体类型的切片(不是指针)

对于原型:

syntax = "proto3";
package messagepb;

import "github.com/gogo/protobuf/gogoproto/gogo.proto";

option (gogoproto.marshaler_all) = true;
option (gogoproto.sizer_all) = true;
option (gogoproto.unmarshaler_all) = true;
option (gogoproto.goproto_getters_all) = false;

service KV {
  // Put puts the given key into the store.
  // A put request increases the revision of the store,
  // and generates one event in the event history.
  rpc Put(PutRequest) returns (PutResponse) {}
}

message PutRequest {
  bytes key = 1;
  bytes value = 2;
}

message ResponseHeader {
  repeated PutRequest l = …
Run Code Online (Sandbox Code Playgroud)

go protocol-buffers

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

如何使用kubernetes-helm中提供的值查看修订历史记录

helm history <release name>但是无法查看每个发行历史记录中使用了哪些值。我怎样才能做到这一点?

kubernetes-helm

2
推荐指数
1
解决办法
2538
查看次数

张量流中的加权随机张量选择

我有一个张量列表和列表,表示它们的概率质量函数.我如何运行每个会话告诉tensorflow根据概率质量函数随机选择一个张量.

我看到几种可行的方法:

一个是排名第一的张量列表,并选择一个基于张量流量变量的切片和挤压我将分配正确的索引.这种方法的性能损失是什么?tensorflow会评估其他不需要的张量吗?

另一个是以类似的方式使用tf.case,我从中挑选出一个张量.同样的问题 - >因为我计划每个图表运行有相当多的(~100s)条件语句,所以性能损失是多少.

有没有更好的方法呢?

tensorflow

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

无法在 alpine docker 容器中启动应用程序

这……有点疯狂?

/bin # echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
/bin # ./app 
sh: ./app: not found
/bin # ls -lha | grep app
-rwxr-xr-x    1 root     root       48.3M May  9 09:48 app
/bin # pwd
/bin
/bin # app
sh: app: not found
Run Code Online (Sandbox Code Playgroud)

docker 镜像是使用多阶段构建创建的:

FROM golang AS builder
WORKDIR /go/src/github.com/nmiculinic/app/
RUN go get -u github.com/golang/dep/cmd/dep
COPY Gopkg.lock Gopkg.toml ./
RUN dep ensure -vendor-only
COPY . .
RUN GOOS=linux go install ./cmd/app

FROM alpine:latest
RUN apk --no-cache add ca-certificates && update-ca-certificates

COPY --from=builder …
Run Code Online (Sandbox Code Playgroud)

docker alpine-linux

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