小编Pio*_*ski的帖子

为什么在python 0,0 ==(0,0)等于(0,False)

在Python中(我只使用Python 3.6进行了检查,但我相信它应该适用于许多以前的版本):

(0, 0) == 0, 0   # results in a two element tuple: (False, 0)
0, 0 == (0, 0)   # results in a two element tuple: (0, False)
(0, 0) == (0, 0) # results in a boolean True
Run Code Online (Sandbox Code Playgroud)

但:

a = 0, 0
b = (0, 0)
a == b # results in a boolean True
Run Code Online (Sandbox Code Playgroud)

为什么两种方法的结果不同?相等运算符是否以不同方式处理元组?

python tuples operator-precedence

116
推荐指数
5
解决办法
8173
查看次数

用于集成测试的Spring-boot默认配置文件

Spring-boot使用Spring配置文件(http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-profiles.html),它允许例如为不同的环境分别配置.我使用此功能的一种方法是配置测试数据库以供集成测试使用.我想知道是否有必要创建我自己的配置文件'test'并在每个测试文件中明确激活此配置文件?现在我用以下方式做到:

  1. 在src/main/resources中创建application-test.properties
  2. 在那里编写测试特定的配置(现在只是数据库名称)
  3. 在每个测试文件中包括:

    @ActiveProfiles("test")
    
    Run Code Online (Sandbox Code Playgroud)

有更聪明/更简洁的方式吗?例如,默认测试配置文件?

编辑1:这个问题与Spring-Boot 1.4.1有关

java spring spring-boot

64
推荐指数
9
解决办法
7万
查看次数

使用 pyproject.toml 和 flake8 指定每个文件忽略

我正在使用 flake8 (与 flakehell 一起使用,但这不会干扰)并将其配置保存在pyproject.toml文件中。我想添加一个per-file-ignores配置,但没有任何效果,并且没有关于如何在 toml 文件中格式化它的文档。

Flake8 文档仅显示“本机”配置文件格式:

per-file-ignores =
    project/__init__.py:F401
    setup.py:E121
    other_project/*:W9
Run Code Online (Sandbox Code Playgroud)

pyproject.toml 没有描述/示例。

我试过:

per-file-ignores=["file1.py:W0621", "file2.py:W0621"]
Run Code Online (Sandbox Code Playgroud)

per-file-ignores={"file1.py" = "W0621", "file2.py" = "W0621"}
Run Code Online (Sandbox Code Playgroud)

两者都默默地失败并且没有任何效果(仍然发出警告)。

使用 pyproject.toml 时,flake8/flakehell 中每个文件忽略设置的正确语法是什么?

python configuration lint flake8

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

具有长 ETA 和 RabbitMQ 的 Celery 任务

RabbitMQ 可以强制消费者确认超时:https://www.rabbitmq.com/consumers.html#acknowledgement-modes 默认情况下,如果任务在 15 分钟内没有被确认,整个节点将因错误而关闭PreconditionFailed。我需要在很远的将来(1-3小时)安排一个celery任务(使用RabbitMQ作为代理),并且到目前为止(使用celery 4和rabbitmq 3.8),当我尝试这样做时......我得到PreconditionFailed了为我的 RMQ 配置的消费者确认超时。我预计该任务将在预计到达时间之前得到确认......

有没有办法将 ETA celery 任务配置为在消费者确认超时内得到确认?

现在我正在将consumer_timeout预计到达时间增量增加到以上,但必须有更好的解决方案......

rabbitmq celery

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

除非调整浏览器窗口大小,否则Angular ui网格不显示内容

我使用angularjs 1.5.0与角度ui网格3.1.1.当我在控制器体中分配gridOptions(传递给grid指令)对象时,如下所示:

$scope.gridOptions = {
      data: [{"mock2": 1, "mock1": 2}, {"mock2": 10, "mock1": 22} ]
    };
Run Code Online (Sandbox Code Playgroud)

HTML:

    <div ui-grid="gridOptions"></div>
Run Code Online (Sandbox Code Playgroud)

它按预期显示表格.但是当我尝试更改$ scope.on中的数据时:

$scope.$on('update', function (event, passedFromBroadcast) {
      $scope.gridOptions.data= [{"mock2": "set", "mock1": "inside"}, {"mock2": "$scope", "mock1": "on"} ] ;
    });
Run Code Online (Sandbox Code Playgroud)

它只呈现表格的框架,当包括分页时,它也会呈现与分页相关的控件 - 但不会呈现内容本身.仅在我调整浏览器窗口大小后才会显示内容(行和列标题).

  1. 当$ scope.on中的数据发生变化时,为什么angular-ui网格不更新表内容?
  2. 如何手动更新角度ui网格表? 我已经尝试过的事情:

    $scope.gridApi.core.handleWindowResize(); // Does not work
    $scope.gridApi.core.refresh(); // Does not work
    $timeout(function(){$scope.gridOptions.data= [{"mock2": "set", "mock1": "inside"}, {"mock2": "$scope", "mock1": "on"} ] ;}) // Does not work
    
    Run Code Online (Sandbox Code Playgroud)

javascript angularjs angular-ui-grid

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

无法捕获 HTTP 请求错误代码 429

使用fetchApi我向端点发出 POST 请求并捕获如下错误:

fetch(new Request(url, {
  method: 'POST',
  headers: { ...defaultHeaders, ...headers } ,
  credentials: 'include',
  body: JSON.stringify(body)
})).then(
  // handle correct reponse
).catch(
  if (err.status === 401) {
       // handle error nicely
    } else if (err.status === 429) {
       // handle error differently
    } else {
      // handle error yet another way
    }
);
Run Code Online (Sandbox Code Playgroud)

虽然 401 错误按预期处理,但当端点以 429 响应时,代码

else if (err.status === 429) {
       // handle error differently
    } 
Run Code Online (Sandbox Code Playgroud)

永远不会被执行。

EDIT1:在 429 的情况下永远不会达到整个捕获

javascript/浏览器对 401 和 …

javascript http fetch-api

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

文件描述符在 Python 中的分叉子进程中结束

在 Python 3.8 应用程序中,父进程负责创建子进程(工作进程)并通过 IPC(任务)将消息转发给它们。

父进程有自己的记录器,它使用 FileHandler 写入文件main.log,但它也为每个子进程打开一个记录器,每个子进程都有一个唯一的文件来记录 IPC 活动和错误。

子进程是通过系统调用 fork 创建的。IPC 通过操作系统队列完成。请参见下图来说明这种情况。

子进程

问题是:虽然在父进程端记录 IPC 活动并将其保存在专用文件中是有益的,但这会打开大量文件描述符 (FD),这些文件描述符都会被每个后续子进程继承。

问题:如何管理这些FD?在 run() 上的每个子进程中手动查找并关闭它们?有没有更好的办法?

python fork multiprocessing

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

Python 中已包含大括号的字符串插值

我正在用 Python 准备一个 GraphQL 查询字符串,我需要在字符串中插入三个变量,只有一个问题。GraphQL 包含大量大括号,它会干扰 Python f 字符串的工作方式。

number = 10
owner = "me"
name = "my_repo"
query = f"""
query {
    repository(owner:"{owner}", name:"{repo}") {
      pullRequests(first: {number}) {
        edges {
          node {
            state
            merged
            createdAt
          }
        }
      }
    }
  }
"""
Run Code Online (Sandbox Code Playgroud)

上面的代码引发语法错误。所以我认为我需要完全放弃使用 f 字符串? 当 f 字符串包含与插值无关的大括号时,有没有办法在 Python 中仍然使用 f 字符串?

python

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