小编Jas*_*per的帖子

如何为SQLAlchemy模型动态生成marshmallow模式

我正在使用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不同?

python sqlalchemy flask marshmallow

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

如何配置一个 kubernetes 裸机入口控制器来监听 80 端口?

我有一个 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)

kubernetes cloud-bare-metal kubernetes-ingress

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