小编iAm*_*ric的帖子

即使使用 restartPolicy:“从不”,Kubernetes 作业也会重新启动

我的工作以restartPolicy: "Never"“错误”结尾

有了Status : Error这个作业就不应该重新启动。

然而,每次前一个作业失败时,都会一次又一次地创建一个新的 Pod:

$ kubectl get pods
kafka-pvbqk          0/1     Error              0          2m19s
kafka-ttt95          0/1     Error              0          109s
kafka-7fqgl          0/1     Error              0          69s
kafka-rrmlk          0/1     PodInitializing    0          2s
Run Code Online (Sandbox Code Playgroud)

我知道第一件事应该是修复错误,但我也想了解 Pod 重新启动的原因以及如何避免这种情况?

谢谢

kubernetes

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

python中的集成测试

我有一个要测试的 python 项目。我已经有了单元测试,unittest但我需要做集成测试。

为此,我有两个应用程序:我必须测试的真实应用程序和一个“测试”应用程序,它将向第一个应用程序发送请求,等待响应,然后将其与预期结果进行比较:

在此处输入图片说明

这样我就可以测试应用程序是否正确响应请求。

目前,我有我上面描述的内容,但在 main.py(不是特定的测试文件)中。另外,比较只是用打印功能完成的,所以我可以看到它的工作原理。但是我必须执行这些测试并能够以常规格式(例如 junit xml)获得结果。

我如何编写、运行和获取这些测试的结果?

编辑

我正在开发 Azure IoT Edge 模块,并且正在使用 Route 来连接模块。这是测试模块的代码,我需要在其中执行测试:

import random
import time
import sys
import iothub_client
import json

# pylint: disable=E0611
from iothub_client import IoTHubModuleClient, IoTHubClientError, IoTHubTransportProvider
from iothub_client import IoTHubMessage, IoTHubMessageDispositionResult, IoTHubError

# Callback received when the message that we're forwarding is processed.
def send_confirmation_callback(message, result, user_context):
    print ( "Confirmation[%d] received for message with result = %s" % (user_context, result) )

# receive_message_callback is invoked when an …
Run Code Online (Sandbox Code Playgroud)

python testing integration-testing azure-iot-hub azure-iot-edge

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

将两个选择查询合并为一个

我有三个表:历史,视频和用户.以下两个查询为每个视频显示法国用户或德国用户的观看次数:

SELECT V.idVideo, COUNT(H.idVideo) AS nb_fr
FROM HISTORY H
INNER JOIN VIDEO V ON V.idVideo = H.idVideo
INNER JOIN USER U ON U.idUser = H.idUser
WHERE U.nationality = 'french'
GROUP BY H.idVideo
ORDER BY V.idVideo;
Run Code Online (Sandbox Code Playgroud)

SELECT V.idVideo, COUNT(H.idVideo) AS nb_ge
FROM HISTORY H
INNER JOIN VIDEO V ON V.idVideo = H.idVideo
INNER JOIN USER U ON U.idUser = H.idUser
WHERE U.nationality = 'german'
GROUP BY H.idVideo
ORDER BY V.idVideo
Run Code Online (Sandbox Code Playgroud)

但是如何将这两个查询结合起来只有一个?我想要这样的东西:

idVideo | nb_fr | nb_ge
-----------------------
    1   |   5 …
Run Code Online (Sandbox Code Playgroud)

sql oracle

7
推荐指数
2
解决办法
208
查看次数

当 Posgres 在 Docker 中运行时设置酒保备份

我有一个 kubernetes 集群,有一个运行 postgres 数据库的 pod,所以在 Docker 中。显然,我已经将数据安装在主机上了。

我想设置 Barman 来为数据库提供备份解决方案。

我阅读了有关酒保的文档。根据http://docs.pgbarman.org/release/2.0/的设计和架构部分,我想采用以下架构,因为我有一个大型数据库,并且增量备份符合我们的要求。这对于流式备份策略来说是不可能的(场景 1:通过流式协议备份),即使他们说这对于 Docker 环境更好

在此输入图像描述

我的问题是当 postgres 在 Docker 中运行时如何设置?由于文件已安装在主机上,我可以仅在主机上使用 ssh 来继续备份吗?

感谢你的回答

database backup database-backups docker barman

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

在 Alpine Docker 中安装 Docker

我有一个带有经典 Ubuntu 基础映像的 Dockerfile,我正在尝试减小其大小。这就是我使用 Alpine 底座的原因。

在我的 Dockerfile 中,我必须安装 Docker,因此 Docker in Docker。

FROM alpine:3.9 

RUN apk add --update --no-cache docker
Run Code Online (Sandbox Code Playgroud)

这很好用,我可以docker version在我的容器内运行,至少对于客户端来说是这样。因为对于服务器,我有一个经典的 Docker 错误:

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
Run Code Online (Sandbox Code Playgroud)

我知道在 Ubuntu 中安装 Docker 后我必须运行

usermod -a -G docker $USER
Run Code Online (Sandbox Code Playgroud)

但在阿尔卑斯山呢?我怎样才能避免这个错误?

附:

我的第一个想法是通过绑定安装等方式重新使用 Docker 套接字/var/run/docker.sock:/var/run/docker.sock,从而进一步减小图像的大小,因为我不必重新安装 Docker。

但是由于Dockerfile中不允许bind-mount,你知道我的想法是否可行以及如何实现?我知道这在 Docker-compose 中是可能的,但我只能使用 Dockerfile。

谢谢

docker dockerfile alpine-linux docker-in-docker

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

获取Qt中所有QPushButton的列表

我想获得QPushButtonMainWindow 中的所有列表.实际上,我有一个QRadioButton,当我取消选中它时,我想禁用QPushButton我的所有窗口.

我怎样才能做到这一点 ?

c++ qt qpushbutton qradiobutton

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

在引导标签中显示Google图表时出现问题

我在Boostrap标签中显示Google图表时遇到问题。我有两个标签,每个标签中都有一个Google图表。在第一个图表中,图表可以正确显示,但是在第二个图表中,图表很小并且可以压缩。我不明白为什么。

这是我的代码:

<div class="tab-pane active" id="player">
    <h3>Players' resources</h3>
    <div id="totalPlayerChart" style="height: 500px;"></div>
</div>

<div class="tab-pane" id="producer">
    <h3>Producers' resources</h3>
    <div id="totalProducerChart" style="height: 500px;"></div>
</div>

<script type="text/javascript">
    google.charts.load('current', {'packages':['corechart']});
    google.charts.setOnLoadCallback(drawTotalPlayerChart);
    google.charts.setOnLoadCallback(drawTotalProducerChart);

    function drawTotalPlayerChart() {
        [...]
        var chart = new google.visualization.LineChart(document.getElementById('totalPlayerChart'));
        chart.draw(data, options);
    }

    function drawTotalProducerChart() {
        [...]
        var chart = new google.visualization.LineChart(document.getElementById('totalProducerChart'));
        chart.draw(data, options);
    }
</script>
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明 在此处输入图片说明

javascript charts google-visualization twitter-bootstrap

3
推荐指数
2
解决办法
1142
查看次数

Qt Creator 正在全屏运行

我在使用 QT Creator 时遇到了一个奇怪的问题。软件正在全屏打开。这很烦人,因为我没有文件、编辑、工具等栏...

如何禁用此全屏模式?

谢谢

qt qt-creator

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

如何在QT中停止qThread

我想知道如何正确停止QThread.我在一个线程中有一个无限循环,我想在我做一个特定的动作时停止它:

我试过了 :

if (thread->isRunning()){
    worker->stop();
    thread->terminate();
}
Run Code Online (Sandbox Code Playgroud)

stop()方法将值设置为false以退出无限循环.

此外,我真的不明白quit(),terminate()或wait()之间的区别.有人可以解释一下吗?

谢谢.

c++ qt qthread

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

无法使用python读取文件

我正在尝试使用 python 3.8.5 读取文件的内容,但输出为空,我不明白我做错了什么。

这是代码:

import subprocess
import os

filename = "ls.out"
ls_command = "ls -la"
file = open(filename, "w")
subprocess.Popen(ls_command, stdout=file, shell=True)
file.close()

# So far, all is ok. The file "ls.out" is correctly created and filled with the output of "ls -la" command"

file = open(filename, "r")
for line in file:
    print(line)
file.close()
Run Code Online (Sandbox Code Playgroud)

这个脚本的输出是空的,它不打印任何东西。看不到内容ls.out

这里有什么不正确的?

python file

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