Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.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/1/database/8.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 将数据库与消息队列解耦的最佳实践_Python_Database_Pylons_Message Queue_Celery - Fatal编程技术网

Python 将数据库与消息队列解耦的最佳实践

Python 将数据库与消息队列解耦的最佳实践,python,database,pylons,message-queue,celery,Python,Database,Pylons,Message Queue,Celery,我正在构建一个允许用户上传图像的web应用程序。上传图像时,需要将其大小调整为一个或多个大小,每个大小都需要发送到Amazon s3进行存储。每个图像大小的元数据和URL都存储在web服务器上的单个数据库记录中。我正在使用一个消息队列异步执行大小调整和上载(因为可能会有大图像和每个请求多个大小调整)。调整大小/上载任务完成后,需要使用url更新数据库记录 我的问题是,执行任务的工作人员将无法访问数据库。我正在考虑在任务完成并提供了更新数据库记录的适当信息后,从worker向web应用程序发起一个

我正在构建一个允许用户上传图像的web应用程序。上传图像时,需要将其大小调整为一个或多个大小,每个大小都需要发送到Amazon s3进行存储。每个图像大小的元数据和URL都存储在web服务器上的单个数据库记录中。我正在使用一个消息队列异步执行大小调整和上载(因为可能会有大图像和每个请求多个大小调整)。调整大小/上载任务完成后,需要使用url更新数据库记录

我的问题是,执行任务的工作人员将无法访问数据库。我正在考虑在任务完成并提供了更新数据库记录的适当信息后,从worker向web应用程序发起一个http回调。是否有其他替代方案或理由让我以另一种方式这样做

我将python/pylons用于web后端,mysql用于数据库,芹菜/amqp用于消息传递


谢谢

您的目标似乎不是将数据库与MQ分离,而是与工作线程分离。因此,您可以创建另一个接收完成通知的队列,并让另一个工作人员接收通知并适当更新数据库。

“……执行任务的工作人员将无法访问数据库。”有什么特殊原因吗?大多数情况下,工人将在不同的机器上运行,并且不能直接访问数据库(出于安全原因)。正确,标题可能有点误导。我曾想过将其分为两个独立的任务,但没有考虑另一个队列。这实际上很有意义,因为我可以将需要数据库访问权限的任务路由到特权机器。谢谢