微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Graphene Django 的 MySQL 复制

如何解决Graphene Django 的 MySQL 复制

enter image description here

我在 Django 中使用 Graphene 作为 GraphQL 服务器。 我在 Django 中设置了一个 MysqL 副本。我的设置很简单。读取请求 -> 副本。写入请求 -> 来源

Mutations 的工作方式如下:它们修改数据,然后返回修改后的/新数据。 石墨烯修改 Source 中的数据并立即从 Replica 中选择它们。 问题是更新的数据不会立即出现在副本数据库中(因为复制延迟)。结果,一些突变根本不起作用。

我有一个解决方案 - 在每个突变中指定 Django 数据库。还没试过。但是项目很大,这需要对代码库进行大量更改。

我正在寻找更简单的解决方案。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.MysqL','NAME': 'db_name','USER': 'root','HOST': MysqL_HOST,'PORT': '3306',},'read_replica': {
        'ENGINE': 'django.db.backends.MysqL','NAME': 'db_name_replica','HOST': MysqL_HOST_REPLICA,}
}
DATABASE_ROUTERS = ['app.db_router.DatabaseRouter']

class DatabaseRouter:
    def db_for_read(self,model,**hints):
        return 'read_replica'

    def db_for_write(self,**hints):
        return 'default'

    def allow_relation(self,obj1,obj2,**hints):
        return True

    def allow_migrate(self,db,app_label,model_name=None,**hints):
        return True

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。