带有自动旋转密码数据库的Django连接

时间:2018-10-22 08:11:57

标签: python mysql django passwords

我有一个运行良好的export interface AncestorProps {} export class Ancestor<P extends AncestorProps, S = {}> extends React.Component<P, S> {} interface DescendentProps extends AncestorProps { someFunction: () => void; } export class Descendent<P extends DescendentProps, S = {}> extends Ancestor<P, S> {} 应用程序。它已连接到托管在云上的Django服务器。

出于安全原因,MySQL服务器被设置为每30天自动旋转一次密码。仅当使用我开发的自定义功能加载MySQLDjango才能访问新密码(将从settings.py获取新密码)。

我正在寻找一种方法,允许AWS Secrets Manager检测连接是否有问题,然后更新对用户透明的密码。

有可能吗?

1 个答案:

答案 0 :(得分:0)

我能想到的选项:

  1. 您可以使用自定义中间件在每次请求前检查连接。
  2. 您可以使用cron作业来定期检查失败的数据库连接,并在发现这样的失败时更新设置。

要检查连接,可以使用方法django.db.connection.ensure_connection()。如果您查看this answer,则可以尝试执行以下操作:

from django.db import connection
from django.db.utils import OperationalError

class Command(BaseCommand):
    def handle(self, *args, **options):
        try:
            # if this succeeds, no further action is needed
            connection.ensure_connection()
        except OperationalError:
            # update the DB password and try again