小编sve*_*ltr的帖子

模块从哪里导入?

假设我有两个Python模块,并且path_b在导入路径中:

# file: path_b/my_module.py
print "I was imported from ???"

#file: path_a/app.py
import my_module
Run Code Online (Sandbox Code Playgroud)

是否可以查看模块的导入位置?我想要一个输出,如"我是从path_a/app.py导入的",如果我启动app.py(因为我需要文件名).

编辑: 为了更好地理解; 我可以写:

# file: path_b/my_module.py
def foo(file):
    print "I was imported from %s" % file

#file: path_a/app.py
import my_module
my_module.foo(__file__)
Run Code Online (Sandbox Code Playgroud)

所以输出将是:

$> python path_app.py
I was imported from path_a/app.py
Run Code Online (Sandbox Code Playgroud)

python

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

短rot13函数 - Python

我在Python中搜索一个简短而酷的rot13函数;-)我写了这个函数:

def rot13(s):
    chars = "abcdefghijklmnopqrstuvwxyz"
    trans = chars[13:]+chars[:13]
    rot_char = lambda c: trans[chars.find(c)] if chars.find(c)>-1 else c
    return ''.join( rot_char(c) for c in s ) 
Run Code Online (Sandbox Code Playgroud)

谁能让它变得更好?例如,支持大写字符.

python string encoding

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

自定义ObjectMapper与Jersey 2.2和Jackson 2.1

我正在与Grizzly,Jersey和Jackson一起使用REST应用程序,因为Jersey忽略了我的自定义ObjectMapper.

POM依赖:

<dependencies>
    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-grizzly2-servlet</artifactId>
        <version>2.2</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.jaxrs</groupId>
        <artifactId>jackson-jaxrs-json-provider</artifactId>
        <version>2.1.4</version>
    </dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)

结果版本是:Grizzly 2.3.3,Jackson 2.1.4和Jersey 2.2.

主类(我希望明确注册Jersey组件):

public class Main {
    public static void main(String[] args) {
        try {
            ResourceConfig rc = new ResourceConfig();
            rc.register(ExampleResource.class);
            rc.register(ObjectMapperResolver.class);

            HttpHandler handler = ContainerFactory.createContainer(
                    GrizzlyHttpContainer.class, rc);

            URI uri = new URI("http://0.0.0.0:8080/");

            HttpServer server = GrizzlyHttpServerFactory.createHttpServer(uri);

            ServerConfiguration config = server.getServerConfiguration();
            config.addHttpHandler(handler, "/");

            server.start();
            System.in.read();

        } catch (ProcessingException | URISyntaxException | IOException e) {
            throw new Error("Unable to create HTTP server.", e);
        }
    } …
Run Code Online (Sandbox Code Playgroud)

java jax-rs jersey jackson jersey-2.0

46
推荐指数
6
解决办法
7万
查看次数

如何使用自定义AdminSite类?

哪个是实现我自己的最佳方式django.contrib.admin.sites.AdminSite

其实我得到一个问题登记INSTALLED_APPSdjango.contrib.admin.autodiscover.如果我使用自定义AdminSite类urls.py,则管理页面上不会显示任何应用程序.

我用一个小黑客修复了这个问题.我写了这堂课:

from django.contrib.admin.sites import site as default_site

class AdminSiteRegistryFix( object ):
    '''
    This fix links the '_registry' property to the orginal AdminSites
    '_registry' property. This is necessary, because of the character of
    the admins 'autodiscover' function. Otherwise the admin site will say,
    that you havn't permission to edit anything.
    '''

    def _registry_getter(self):
        return default_site._registry

    def _registry_setter(self,value):
        default_site._registry = value

    _registry = property(_registry_getter, _registry_setter)
Run Code Online (Sandbox Code Playgroud)

并实现我的自定义AdminSite,如下所示:

from wltrweb.hacks.django.admin import AdminSiteRegistryFix
from django.contrib.admin …
Run Code Online (Sandbox Code Playgroud)

python django django-admin

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

复制数据库快照的最小KMS权限

我正在尝试设置aws rds copy-db-snapshot使用KMS加密密钥的最小权限:

$ aws rds copy-db-snapshot --source-db-snapshot-identifier rds-backup-share-
mysql --target-db-snapshot-identifier rds-backup-share-mysql-reencrypted --kms-key-id <kms-arn>
Run Code Online (Sandbox Code Playgroud)

(其中的所有内容都<>被我删除并包含有效值.)

不幸的是我收到此错误:

An error occurred (KMSKeyNotAccessibleFault) when calling the CopyDBSnapshot operation: The target snapshot KMS key [<kms-arn>] does not exist, is not enabled or you do not have permissions to access it.
Run Code Online (Sandbox Code Playgroud)

目前我允许这些行动:

  "Action": [
    "kms:ReEncrypt*",
    "kms:ListKeys",
    "kms:ListAliases",
    "kms:GenerateDataKey*",
    "kms:Encrypt",
    "kms:DescribeKey",
    "kms:Decrypt"
  ],
Run Code Online (Sandbox Code Playgroud)

如果我用它替换它kms:*{code},它是有效的,所以它必须是一个权限问题.

我试图通过CloudTrail找出正确的权限,但它只包含相同的无用错误消息.

所以我的实际问题:

  • CopyDBSnapshot的最小KMS权限是多少?
  • 是否有通用的方法来确定所需的权限?通过谷歌搜索所需的权限来浪费我的时间总是很痛苦.

编辑:这是--debug启用日志输出的底部:

2017-08-22 17:15:37,521 - MainThread - botocore.endpoint - DEBUG …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-rds aws-kms

10
推荐指数
2
解决办法
4860
查看次数

kubernetes /了解CPU资源限制

多年来在裸机上运行节点/ rails应用程序; 我习惯于能够在一台机器上运行尽可能多的应用程序(比方说,数字海洋的2Go可以轻松处理10个应用程序而不用担心,基于正确的优化或相当低的流量)

事实是,使用kubernetes,游戏听起来完全不同.我已经设置了一个带有2个标准vm(3.75Go)的"入门"集群.

使用以下内容为部署分配限制:

        resources:
          requests:
            cpu: "64m"
            memory: "128Mi"
          limits:
            cpu: "128m"
            memory: "256Mi"
Run Code Online (Sandbox Code Playgroud)

然后见证了以下内容:

Namespace       Name            CPU Requests    CPU Limits  Memory Requests Memory Limits
---------       ----            ------------    ----------  --------------- -------------
default         api             64m (6%)        128m (12%)  128Mi (3%)      256Mi (6%)
Run Code Online (Sandbox Code Playgroud)

这个6%指的是什么?

试图降低CPU限制,喜欢,20Mi ......应用程序确实启动(显然,资源不足).文档说它是CPU的百分比.那么,3.75Go机器的20%?然后这6%来自哪里?

然后将节点池的大小增加到n1-standard-2,同一个pod有效地跨越3%的节点.这听起来合乎逻辑,但实际上是指什么?

仍然想知道这部分要考虑的指标是什么.

该应用程序似乎在启动时需要大量内存,但它只使用这个6%的最小部分.然后我觉得我误解了一些东西,或者误用了所有东西

感谢任何经验丰富的建议/建议,以便更好地了解最佳

google-cloud-platform kubernetes

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

如何反序列化 Kubernetes YAML 文件

如何将 Kubernetes YAML 文件反序列化为 Go 结构?我查看了kubectl代码,但不知何故我收到每个 YAML 文件的错误:

no kind "Deployment" is registered for version "apps/v1beta1"
Run Code Online (Sandbox Code Playgroud)

这是一个 MWE:

package main

import (
    "fmt"

    "k8s.io/client-go/pkg/api"
)

var service = `
apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: my-nginx
spec:
  replicas: 2
  template:
    metadata:
      labels:
        run: my-nginx
    spec:
      containers:
      - name: my-nginx
        image: nginx
        ports:
        - containerPort: 80
`

func main() {
    decode := api.Codecs.UniversalDecoder().Decode
    //decode := api.Codecs.UniversalDeserializer().Decode

    obj, _, err := decode([]byte(service), nil, nil)
    if err != nil {
        panic(err) …
Run Code Online (Sandbox Code Playgroud)

go kubernetes kubernetes-go-client

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

如何通过SSH连接到Kubernetes节点或服务器

如何通过SSH进入AWS托管的Kubernetes节点或服务器?我已经在AWS上托管了Kubernetes服务器和节点。我可以使用kubectl get node命令从本地笔记本电脑查看节点和服务器。

我需要为我的节点创建一个持久卷,但是无法将其SSH入其中。

有没有什么特定的方法可以SSH进入节点或服务器?

kubernetes kubernetes-helm

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

如何更新有状态集中的 storageClassName?

我是 k8 的新手,并尝试更新 StatefulSet 中的 storageClassName。(从默认到 default-t1 仅在 yaml 中更改)

我尝试跑步kubectl apply -f test.yaml

第一个和第二个 Yaml(用于应用更新)之间的唯一区别是 storageClassName:default-t1 而不是 default

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: web
spec:
  serviceName: "nginx"
  podManagementPolicy: "Parallel"
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: k8s.gcr.io/nginx-slim:0.8
        ports:
        - containerPort: 80
          name: web
        volumeMounts:
        - name: www
          mountPath: /usr/share/nginx/html
  volumeClaimTemplates:
  - metadata:
      name: www
    spec:
      accessModes: [ "ReadWriteOnce" ]
      storageClassName: default
      resources:
        requests:
          storage: 1Gi
Run Code Online (Sandbox Code Playgroud)

每次我尝试更新时都会得到The …

kubernetes

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

使用冗余关系是不是很糟糕?

假设我的数据库中有以下表:

表http://www.freeimagehosting.net/uploads/a5ef036857.png

现在我的所有查询都依赖于Company表.为了简化我的SQL查询,为每个其他表提供(冗余)关系是否是一种不好的做法?

编辑1:背景是框架的使用问题.请参阅Django:限制模型数据.

编辑2:没有元组会改变他的公司.

编辑3:我不写mysql查询.我使用抽象层(django).

database database-design relational-database

7
推荐指数
3
解决办法
2878
查看次数

具有绝对路径的Apache ErrorDocument

我有一台带有几个虚拟主机的服务器.现在我想为整个服务器设置错误文档.我在/ var/www/error/*中找到了我的错误站点,但是使用ErrorDocument指令我只能设置相对于文档根目录的错误文档,但我想使用绝对路径(例如/ var/www /误差/ 404.html).

有谁知道我怎么能得到这个?

apache apache-config apache2.2

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

如何在Kubernetes部署中使用卷?

我想将卷用于具有多个副本的部署.如何定义,PersistentVolumeClaim以便为每个副本生成?目前(见下面的例子)我能够生成一个卷并将其分配给pod.问题是,只生成了一个卷,导致出现此错误消息:

  38m   1m  18  {kubelet worker-1.loc}      Warning FailedMount Unable to mount volumes for pod "solr-1254544937-zblou_default(610b157c-549e-11e6-a624-0238b97cfe8f)": timeout expired waiting for volumes to attach/mount for pod "solr-1254544937-zblou"/"default". list of unattached/unmounted volumes=[datadir]
  38m   1m  18  {kubelet worker-1.loc}      Warning FailedSync  Error syncing pod, skipping: timeout expired waiting for volumes to attach/mount for pod "solr-1254544937-zblou"/"default". list of unattached/unmounted volumes=[datadir]
Run Code Online (Sandbox Code Playgroud)

如何告诉Kubernetes为每个副本生成一个卷?

我正在使用Kubernetes 1.3.


例:

---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: solr-datadir
  annotations:
    volume.alpha.kubernetes.io/storage-class: anything
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 50Gi
--- …
Run Code Online (Sandbox Code Playgroud)

kubernetes

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