小编rok*_*rok的帖子

使用 Popen.wait() 时重现死锁

从使用Popen.wait()的文档可以:

当使用 stdout=PIPE 和/或 stderr=PIPE 并且子进程向管道生成足够的输出时死锁,从而阻止等待 OS 管道缓冲区接受更多数据。使用communication() 来避免这种情况。

在交流文档中,它写道:

读取的数据是缓存在内存中的,所以如果数据量很大或者没有限制就不要使用这种方式

如何重现这种有问题的行为并看到使用Popen.communicate()修复它?

死锁意味着持有资源的进程之间会发生一些循环等待并且永远卡住。这里的循环依赖是什么?等待子进程终止的 Python 进程是一种等待。另一个是什么?在下面的场景中,谁在等待什么?

它阻止等待 OS 管道缓冲区接受更多数据

python deadlock subprocess popen python-3.x

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

ansible regex_search 与变量

如何在变量出现在regex_search参数中的 ansible playbook 中使用正则表达式找到匹配项?

以下剧本找不到匹配项...运行时使用: ansible-playbook playbook.yml

- hosts: localhost
  gather_facts: no
  tasks:
     - set_fact:
          pattern: "{{ 'foobar' | regex_search('foo') }}"
     - set_fact:
          m: "{{ 'beefoo' | regex_search('bee{{ pattern }}') }}"     
     - debug:
          msg: "hi {{ m }}"
Run Code Online (Sandbox Code Playgroud)

regex ansible ansible-template

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

替换Intellij中多个源文件中的所有字符串

可能吗?最好使用2个选项:1)使用变量2)其他字符串.谢谢.

replace search-engine intellij-idea

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

使用Java连接到MongoDB服务器实例期间的身份验证

有可能做出类似的东西:

MongoClient mongo = new MongoClient(ip, port, usrName, password)
Run Code Online (Sandbox Code Playgroud)

在JAVA中类似于MongoVUE或其他基于SQL的数据库的身份验证方法.

在连接到数据库实例期间完成身份验证.

我在MongoClient java doc中没有看到合适的实例方法

身份验证方式(可选)官方文档

不适合我的目标,因为它需要更改我的应用程序中现在不使用身份验证的所有现有查询方法.

使用Java驱动程序对MongoDB进行身份验证的方式看起来正是我需要的,但mongo 2.10.1发行版中没有com.mongodb.MongoCredential类.

java authentication mongodb mongovue

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

在Keycloak Docker Swarm服务中添加健康检查

测试配置为部署为 docker swarm 服务的集群的Keycloak 运行状况的最佳方法是什么?

我尝试了以下健康检查来测试 Keycloak 服务描述符中的可用性:

   healthcheck:
      test: ["CMD-SHELL", "curl http://localhost:8080/auth/realms/[realm_name]"]
      interval: 30s
      timeout: 10s
      retries: 10
      start_period: 1m
Run Code Online (Sandbox Code Playgroud)

还有更多的事情需要检查吗?找不到这方面的文档。

docker keycloak docker-swarm redhat-sso

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

修改 Rancher Desktop VM 中的 docker 守护进程配置

有没有办法修改 Rancher Desktop VM 中的 docker 守护进程配置,例如添加不安全的注册表等...?

进行此类修改后,我想重新启动 docker 守护进程以应用更改。有没有办法连接到 Rancher Desktop VM?

在https://docs.rancherdesktop.io/faq中没有找到任何相关内容

docker-daemon rancher-desktop

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

从nltk或其他NLP库中的副词中获取形容词

有没有办法在NLTK或其他python库中获得与给定副词相对应的形容词.例如,对于副词" 非常 ",我需要变得" 可怕 ".谢谢.

python nlp nltk

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

使用paramiko python ssh库通过xterm远程执行程序

该计划的流程是:

  1. 使用Paramiko库连接到Linux机器上的OpenSSH服务器
  2. 打开X11会话
  3. 运行xterm可执行文件
  4. 通过在终端中键入可执行文件名并运行它来运行其他程序(例如Firefox).

如果有人能够解释如何使用以下代码打开终端中运行某些可执行文件并提供示例源代码(源代码),我将不胜感激:

import select
import sys
import paramiko
import Xlib.support.connect as xlib_connect
import os
import socket
import subprocess



# run xming
XmingProc = subprocess.Popen("C:/Program Files (x86)/Xming/Xming.exe :0 -clipboard -multiwindow")
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(SSHServerIP, SSHServerPort, username=user, password=pwd)
transport = ssh_client.get_transport()
channelOppositeEdges = {}

local_x11_display = xlib_connect.get_display(os.environ['DISPLAY'])
inputSockets = []

def x11_handler(channel, (src_addr, src_port)):
    local_x11_socket = xlib_connect.get_socket(*local_x11_display[:3])
    inputSockets.append(local_x11_socket)
    inputSockets.append(channel)
    channelOppositeEdges[local_x11_socket.fileno()] = channel
    channelOppositeEdges[channel.fileno()] = local_x11_socket
    transport._queue_incoming_channel(channel)

session = transport.open_session()
inputSockets.append(session)
session.request_x11(handler = x11_handler)
session.exec_command('xterm')
transport.accept() …
Run Code Online (Sandbox Code Playgroud)

python x11 ssh multithreading paramiko

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

"进程池"中的"集合"对象在pymongo中不可调用错误

使用以下代码会导致:

'Collection' object is not callable. If you meant to call the '__getnewargs__' method on a 'Collection' object it is failing because no such method exists.
Run Code Online (Sandbox Code Playgroud)

代码:来自多处理导入池db = MongoClient(ip,port)

def f(cursor, arg):
    for doc in cursor:
       ...

p = Pool(4)
for arg in args:
    cursor = db[dbName][collName].find()
    p.apply_async(f,[cursor, arg])

db.close()
Run Code Online (Sandbox Code Playgroud)

无法弄清楚问题是什么以及如何调试代码.

完全追溯:

Exception in thread Thread-2:
Traceback (most recent call last):
  File "C:\Python27\lib\threading.py", line 808, in __bootstrap_inner
    self.run()
  File "C:\Python27\lib\threading.py", line 761, in run
    self.__target(*self.__args, **self.__kwargs)
  File "C:\Python27\lib\multiprocessing\pool.py", line 342, …
Run Code Online (Sandbox Code Playgroud)

python multiprocessing pymongo

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

从 Keycloak 生成的 JWT 确定用户是否有权访问特定资源

OpenID Connect 上的 Keycloak 文档指出

访问令牌由领域进行数字签名,并包含应用程序可用于确定允许用户访问应用程序上的哪些资源的访问信息(如用户角色映射)。

是否可以从 Keycloak 认证后返回的访问令牌中确定允许用户访问哪些资源?按照keycloak 快速入门关于获取 OAuth2 访问令牌的说明,我得到以下 JWT(省略了不相关的字段):

{
  "aud": "app-authz-springboot",
  "sub": "9c6c4a66-bb14-420f-a8af-3b2771266b38",
  "typ": "Bearer",
  "azp": "app-authz-springboot",
  "realm_access": {
    "roles": [
      "user"
    ]
  },
  "resource_access": {},
  "preferred_username": "alice"
}
Run Code Online (Sandbox Code Playgroud)

有一块空地

资源访问

有没有办法用用户有权访问的资源填充它?这个领域的规范是什么?在JWT RFCOpenID Connect Spec 中找不到它

我尝试了另一种有效的方法:

  1. 使用密码凭证流程获取访问令牌
  2. 将获得的令牌交换为 rpt,稍加修改添加response_mode参数:

    curl -v -X POST \
      http://localhost:8180/auth/realms/spring-boot-quickstart/protocol/openid-connect/token \
      -H "Authorization: Bearer "$access_token \
      --data "grant_type=urn:ietf:params:oauth:grant-type:uma-ticket" \
      --data "audience=app-authz-rest-springboot" \
      --data "permission=Default Resource"
      --data …
    Run Code Online (Sandbox Code Playgroud)

authorization oauth-2.0 jwt openid-connect keycloak

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