Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python s3/cloudfront与数据库同步的体系结构_Python_Django_Amazon S3_Sync_Amazon Cloudfront - Fatal编程技术网

Python s3/cloudfront与数据库同步的体系结构

Python s3/cloudfront与数据库同步的体系结构,python,django,amazon-s3,sync,amazon-cloudfront,Python,Django,Amazon S3,Sync,Amazon Cloudfront,我正在构建一个Django应用程序。该应用程序允许用户上传文件,并将其公开提供给其他用户 我正在考虑使用S3或CloudFront来管理和服务这些文件。(为了便于讨论,我们把它叫做S3。)让我感到困扰的是,S3上会有很多状态。我的Python代码将基于用户操作在S3上创建、重命名和删除文件。但是我们的数据库中已经有了所有的状态。在两个独立的数据存储中保存状态可能会导致同步问题和混乱。换句话说,它“不应该”失去同步。例如,如果有人从django管理员删除数据库中的一条记录,s3上的文件将保持孤立状

我正在构建一个Django应用程序。该应用程序允许用户上传文件,并将其公开提供给其他用户

我正在考虑使用S3或CloudFront来管理和服务这些文件。(为了便于讨论,我们把它叫做S3。)让我感到困扰的是,S3上会有很多状态。我的Python代码将基于用户操作在S3上创建、重命名和删除文件。但是我们的数据库中已经有了所有的状态。在两个独立的数据存储中保存状态可能会导致同步问题和混乱。换句话说,它“不应该”失去同步。例如,如果有人从django管理员删除数据库中的一条记录,s3上的文件将保持孤立状态。(我可以编写代码来处理该场景,但我无法捕获所有场景。)

所以我想的是:有没有一种解决方案可以让你的S3自动与你的Postgres数据库中的数据同步?(我可以将文件作为blob存储在数据库中,只要它们不是直接从那里提供的,它们就不会太大。)我说的是有一个活动的程序始终保持它们之间的同步,因此如果有人删除数据库中的记录,s3中对应的文件就会被删除,如果有人从S3接口删除了一个文件,它就会从数据库中重新创建。这样我就可以放心地处理同步问题了


有这样的事吗?最好是Python。

在过去也发现了同样的问题,也许不是最好的建议,但下面是我所做的

我在模型中编写了upload/modify/remove to S3逻辑,并用于保持更新,例如,您可以使用
post_delete
信号从S3中删除图像并避免孤立

我还有一个管理命令来检查是否所有的事情都是同步的,如果有问题的话就解决。不幸的是,我为一个客户写了这篇文章,我不能分享它


编辑:我找到了,它们可能会有帮助

我看了你的两个包裹。第一个看起来像是为静态文件而不是媒体文件设计的(尽管它的名字),并且它没有以任何方式更新,第二个看起来被放弃了。您在回答中提出的解决方案可能有效。。。但我仍然希望有一个我可以使用的软件包。