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 (将#修改为@)