小编pbn*_*pbn的帖子

异步收集调度顺序保证

是否保证作为参数的协程asyncio.gather将按照保留的顺序进行调度?考虑以下示例:

import asyncio

async def coro(i):
    print('{i} finished'.format(i=i))

async def main():
    await asyncio.gather(
            coro(0),
            coro(1),
            coro(2),
            coro(3),
            coro(4),
    )

loop = asyncio.get_event_loop()
loop.run_until_complete(main())
Run Code Online (Sandbox Code Playgroud)

结果:

0 finished
1 finished
2 finished
3 finished
4 finished
Run Code Online (Sandbox Code Playgroud)

python python-asyncio

9
推荐指数
2
解决办法
3019
查看次数

我应该将哪些指标用于警报 HTTPCode_Target_5XX_Count 或 HTTPCode_ELB_5XX_Count?

我有一个带有单个目标组的 ALB(这是一个 istio-ingress 网关),我想捕获路由到该目标组的任何请求都返回 5XX 代码的场景。

根据文档:

HTTPCode_ELB_5XX_Count:

源自负载均衡器的 HTTP 5XX 服务器错误代码的数量。此计数不包括目标生成的任何响应代码。

HTTPCode_Target_5XX_Count:

目标生成的 HTTP 响应代码的数量。这不包括负载均衡器生成的任何响应代码。

我认为,由于这是一个单一目标组,因此它们应该是相同的,但显然它们不是,因为在特定时间范围内,我看到了一些 HTTP 4XX 的数据,但没有看到 ELB 4XX 的数据。有什么不同?我应该使用哪一个?

amazon-web-services aws-application-load-balancer

8
推荐指数
2
解决办法
7025
查看次数

如何将类实例转换为 JsonDocument?

假设我们有一个如下所示的实体类:

public class SerializedEntity
{
    public JsonDocument Payload { get; set; }

    public SerializedEntity(JsonDocument payload)
    {
        Payload = payload;
    }
}
Run Code Online (Sandbox Code Playgroud)

根据npsql这会生成一个表,该表payload的类型jsonb为此类,这是正确的。

现在我想做的是获取任何类实例并将其存储payload在此表中,例如:

public class Pizza {
    public string Name { get; set; }
    public int Size { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后应该可以作为具有以下结构的对象进行检索:

{Name: "name", Size: 10}
Run Code Online (Sandbox Code Playgroud)

所以我需要这样的东西:

var pizza = new Pizza("Margharita", 10);
var se = new SerializedEntity(someConverter.method(pizza))
Run Code Online (Sandbox Code Playgroud)

c# entity-framework npgsql asp.net-core

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

如何使用 Diesel 在 sqlite 中存储任意 JSON 对象

我有一个输入 JSON:

{"key1": "val1", "key2": 1}
Run Code Online (Sandbox Code Playgroud)

我想将它存储在 sqlite 数据库中,以便稍后使用完全相同的值响应某些 API 请求。

这是我的迁移:

{"key1": "val1", "key2": 1}
Run Code Online (Sandbox Code Playgroud)

我的Cargo.toml

[package]
name = "diesel_playground"
version = "0.1.0"
authors = ["User <user@example.com>"]
edition = "2018"

[dependencies]
diesel = { version = "1.4" , features = ["sqlite"] }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
Run Code Online (Sandbox Code Playgroud)

使用以下代码:

CREATE TABLE my_table (
    id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
    arbitrary_json TEXT NOT NULL
);
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

[package]
name = "diesel_playground" …
Run Code Online (Sandbox Code Playgroud)

rust rust-diesel

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

O_CLOEXEC 和 TIOCEXCL 的区别

我在串行端口 /dev/ttyUSB0 上使用一个设备(使用 FTDI)并且我不想将任何文件描述符泄漏给其他生成的进程,因此我在描述符上设置了 close-on-exec 标志。你能告诉我在打开时设置 O_CLOEXEC 有什么区别:

#include <unistd.h>
#include <fcntl.h>
#include <stdlib.h>
#include <stdio.h>
int main()
{
    int fd, rc;
    fd = open("/dev/ttyUSB1", O_RDWR | O_NOCTTY | O_CLOEXEC);
    if(fd < 0)
    {
        perror("error open:");
        exit(-1);
    }
    rc = close(fd);     
    if(rc != 0)
    {
        perror("error close:");
        exit(-1);
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

并使用 ioctl(fd, TIOCEXCL) 设置 close-on-exec:

#include <unistd.h>
#include <fcntl.h>
#include <termios.h>
#include <sys/ioctl.h>
#include <stdlib.h>
#include <stdio.h>
int main()
{
    int fd, rc;

    fd = open("/dev/ttyUSB1", O_RDWR | …
Run Code Online (Sandbox Code Playgroud)

c linux

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

动态定义声明性jenkins管道中的并行步骤

我尝试并行化动态定义的函数集,如下所示:

def somefunc() {
    echo 'echo1'
}

def somefunc2() {
    echo 'echo2'
}

running_set = [
    { somefunc() },
    { somefunc2() }
]

pipeline {
    agent none
    stages{
        stage('Run') {
            steps {
                parallel(running_set)                
            }

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我最终得到的是:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 17: No "steps" or "parallel" to execute within stage "Run" @ line 17, column 9.
           stage('Run') {
Run Code Online (Sandbox Code Playgroud)

虽然步骤是在"运行"阶段中定义的.无论如何,我想要实现的是一组动态定义的并行执行的函数.

groovy jenkins jenkins-pipeline jenkins-declarative-pipeline

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

Pulumi:如何将 Output&lt;string&gt;[] 序列化为 JSON

我想允许 Lambda 服务在我的 VPC 内创建一个部署,因此我有一个子网 ids 类型的数组Output<string>[],我想将其放入角色策略中,如下所示:

export const createNetworkInterfacePolicy = new aws.iam.RolePolicy(
  "network-interface-policy-2",
  {
    policy: pulumi.interpolate `{
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": ["ec2:CreateNetworkInterfacePermission"],
          "Resource": [
            "arn:aws:ec2:${region}:${callerIdentity.accountId}:network-interface/*"
          ],
          "Condition": {
            "StringEquals": {
              "ec2:Subnet": ${JSON.stringify(vpc.vpcPrivateSubnetIds.map(item => item.apply(JSON.stringify)))},
              "ec2:AuthorizedService": "lambda.amazonaws.com"
            }
          }
        }
      ]
    }`,
    role: deploymentRole
  }
);
Run Code Online (Sandbox Code Playgroud)

不幸的是,我最终得到的是:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateNetworkInterfacePermission"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-2:removedAccountId:network-interface/*"
            ],
            "Condition": {
                "StringEquals": {
                    "ec2:Subnet": [
                        "Calling [toJSON] on an [Output<T>] …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services pulumi

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

无法匹配 C 中的正则表达式

我有以下正则表达式的问题:

 prefix:\w+,\w+,\s*-?[0-9]{1,4}\s*,\s*-?[0-9]{1,4}\s*,\s*-?[0-9]{1,4}\s*,(?:\w+)
Run Code Online (Sandbox Code Playgroud)

匹配字符串如下:

prefix:string,string,-100,100,0,string
Run Code Online (Sandbox Code Playgroud)

我无法在我的 C 代码中匹配这个字符串。至少我在生成这个正则表达式的一些在线工具上获得了成功的匹配。还有关于正则表达式中“\”字符的编译警告,所以我按照c-compiler-warning-unknown-escape-sequence-using-regex-for-c-program 中的解释替换了它。编译警告修复后的正则表达式:

prefix:\\w+,\\w+,\\s*-?[0-9]{1,4}\\s*,\\s*-?[0-9]{1,4}\\s*,\\s*-?[0-9]{1,4}\\s*,(?:\\w+)
Run Code Online (Sandbox Code Playgroud)

下面是测试代码:

#include <stdio.h>
#include <regex.h>        
#include <stdlib.h>

#define REGEX "prefix:\\w+,\\w+,\\s*-?[0-9]{1,4}\\s*,\\s*-?[0-9]{1,4}\\s*,\\s*-?[0-9]{1,4}\\s*,(?:\\w+)"

const char *input = "prefix:string,string,-100,100,0,string";
int main(){

    int rc;

    regex_t regex;

    rc = regcomp(&regex, REGEX, 0);
    if (rc != 0) {
        fprintf(stderr, "Could not compile regex\n");
        exit(1);
    }

    rc = regexec(&regex, input, 0, NULL, 0);
    if (rc == 0) {
        printf("Match!\n");
        return 0;
    }
    else if (rc == REG_NOMATCH) {
        printf("No match\n");
        return -1;
    }
    else { …
Run Code Online (Sandbox Code Playgroud)

c regex

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

普罗米修斯规则因“不允许多对多匹配”而失败

我有一个开箱即用的 kube-prometheus v0.3 设置,其中规则之一:

alert: KubeletTooManyPods
expr: max
  by(node) (max by(instance) (kubelet_running_pod_count{job="kubelet"}) *
  on(instance) group_left(node) kubelet_node_name{job="kubelet"}) / max by(node)
  (kube_node_status_capacity_pods{job="kube-state-metrics"}) > 0.95
Run Code Online (Sandbox Code Playgroud)

正在触发以下错误:

在操作的右侧找到匹配组 {instance="10.0.1.151:10250"} 的重复系列:[{ name ="kubelet_node_name", endpoint="https-metrics", instance="10.0.1.151 :10250”,作业=“kubelet”,metrics_path=“/metrics”,命名空间=“kube-system”,节点=“ip-10-0-1-151.eu-west-1.compute.internal”,服务="prometheus-operator-kubelet"}, { name ="kubelet_node_name", 端点 ="https-metrics", 实例 ="10.0.1.151:10250", job ="kubelet",metrics_path ="/metrics", 命名空间= "kube-system", node="ip-10-0-1-151.eu-west-1.compute.internal", service="kubelet"}];不允许多对多匹配:匹配标签必须一方面是独一无二的

这个规则有什么问题吗?

prometheus

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