我正在使用SQLAlchemy模型创建Flask API.我不想为每个模型定义一个模式,我不想每次都这样做:
class EntrySchema(ma.ModelSchema):
class Meta:
model = Entry
Run Code Online (Sandbox Code Playgroud)
我希望每个模型都有一个模式,因此它可以轻松地自行转储.创建默认架构并设置Schema.Meta.model不起作用:
class Entry(db.Model):
__tablename__ = 'entries'
id = db.Column(db.Integer, primary_key=True)
started_at = db.Column(db.DateTime)
ended_at = db.Column(db.DateTime)
description = db.Column(db.Text())
def __init__(self, data):
for key in data:
setattr(self, key, data[key])
self.Schema = Schema
self.Schema.Meta.model = self.__class__
def dump(self):
schema = self.Schema()
result = schema.dump(self)
return result
class Schema(ma.ModelSchema):
class Meta:
pass
Run Code Online (Sandbox Code Playgroud)
为什么覆盖模型的泛型Schema与声明模型的Schema不同?
我有一个 kubernetes 设置,有 1 个主站和 1 个从站,托管在 DigitalOcean Droplets 上。为了公开我的服务,我想使用 Ingress。
由于我有一个裸机安装,我必须配置我自己的入口控制器。 如何让它侦听端口 443 或 80 而不是 30000-32767 范围?
为了设置入口控制器,我使用了本指南:https : //kubernetes.github.io/ingress-nginx/deploy/
我的控制器服务如下所示:
apiVersion: v1
kind: Service
metadata:
name: ingress-nginx
namespace: ingress-nginx
labels:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
spec:
type: NodePort
ports:
- name: http
port: 80
targetPort: 80
protocol: TCP
- name: https
port: 443
targetPort: 443
protocol: TCP
selector:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
Run Code Online (Sandbox Code Playgroud)
现在很明显,因为 NodePort 范围是 30000-32767,这个控制器不会映射到端口 80 或 443:
? kubectl get services --all-namespaces
NAMESPACE NAME TYPE …Run Code Online (Sandbox Code Playgroud)