假设我有两个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中搜索一个简短而酷的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)
谁能让它变得更好?例如,支持大写字符.
我正在与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) 哪个是实现我自己的最佳方式django.contrib.admin.sites.AdminSite?
其实我得到一个问题登记INSTALLED_APPS在django.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) 我正在尝试设置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找出正确的权限,但它只包含相同的无用错误消息.
所以我的实际问题:
编辑:这是--debug启用日志输出的底部:
2017-08-22 17:15:37,521 - MainThread - botocore.endpoint - DEBUG …Run Code Online (Sandbox Code Playgroud) 多年来在裸机上运行节点/ 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%的最小部分.然后我觉得我误解了一些东西,或者误用了所有东西
感谢任何经验丰富的建议/建议,以便更好地了解最佳
如何将 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) 如何通过SSH进入AWS托管的Kubernetes节点或服务器?我已经在AWS上托管了Kubernetes服务器和节点。我可以使用kubectl get node命令从本地笔记本电脑查看节点和服务器。
我需要为我的节点创建一个持久卷,但是无法将其SSH入其中。
有没有什么特定的方法可以SSH进入节点或服务器?
我是 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 …
假设我的数据库中有以下表:
表http://www.freeimagehosting.net/uploads/a5ef036857.png
现在我的所有查询都依赖于Company表.为了简化我的SQL查询,为每个其他表提供(冗余)关系是否是一种不好的做法?
编辑1:背景是框架的使用问题.请参阅Django:限制模型数据.
编辑2:没有元组会改变他的公司.
编辑3:我不写mysql查询.我使用抽象层(django).
我有一台带有几个虚拟主机的服务器.现在我想为整个服务器设置错误文档.我在/ var/www/error/*中找到了我的错误站点,但是使用ErrorDocument指令我只能设置相对于文档根目录的错误文档,但我想使用绝对路径(例如/ var/www /误差/ 404.html).
有谁知道我怎么能得到这个?
我想将卷用于具有多个副本的部署.如何定义,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 ×5
python ×3
amazon-rds ×1
apache ×1
apache2.2 ×1
aws-kms ×1
database ×1
django ×1
django-admin ×1
encoding ×1
go ×1
jackson ×1
java ×1
jax-rs ×1
jersey ×1
jersey-2.0 ×1
string ×1