0

我的问题是关于 Web 应用程序架构的。

我有一个网站,我的用户可以上传文件,我需要从这些文件中为用户创建某种报告。当用户上传文件时,它存储在我托管网站的服务器上。存储在 Django 模型字段中的文件路径。工人在另一台服务器上,我需要访问我的数据库并处理该文件。我知道如何在没有 URL 和 django 其他部分的情况下使用 django ORM 本身。

我的问题:如果我需要在另一台服务器上创建工作人员,它使用我网站上的不同 django 模型,我需要将所有模型复制到每个工作人员中?

例如,一个工作进程文件,它需要模型“报告”和“用户”。其他工作人员执行其他操作并需要“用户”和“链接”模型。每次我在我的主网站上更改模型时,我都需要在我的工作人员中更改相同的模型,不同的工作人员也可以有相同的重复模型。我认为从架构的角度来看它并不好。

关于如何组织我的网站和工作人员有什么建议吗?

4

3 回答 3

1

您说您正在使用 IronWorker,因此只需在 .worker 文件中的每个工作人员中包含您需要的模型。例如,假设您有一个名为 的工人report_worker.py,它需要“报告”和“用户”,指向report_worker.worker文件中的每一个:

file '../models/user.py'
file '../models/report.py'

或者由于您使用的是 Django,您可能会将所有模型都放在 models.py 中,因此:

file 'models.py'

然后,当其中任何一个更改时,只需使用 cli 重新上传工作人员:

iron_worker upload report_worker

然后,您可以使用与您的应用程序使用的模型相同的模型。希望有帮助!

有关 .worker 文件的更多信息:http: //dev.iron.io/worker/reference/dotworker/

于 2013-04-17T21:21:22.940 回答
0

为什么你的工人真的需要完全相同的模型?您可以将工作人员设计为具有不同的模型来对您的数据执行自己的操作。只需为您的数据设计 API 并从您的主站点单独访问它。

如果确实有必要,可以跨多个项目共享 Django 应用程序。所以你可以把一些通用代码放在一个单独的应用程序中(比如你的共享模型),然后把它们放在源代码控制中。在您的主网站更新后,您也可以轻松地更新工作人员。

于 2013-04-17T08:59:37.187 回答
0

很少有有趣的选择。

例如,您可以reupload workers为部署过程添加额外的步骤。它将保证部署的应用程序和工作人员之间的一致性。

使用自己的 (rest) api 是个好主意,我喜欢它甚至比在不同生物之间共享模型更重要

于 2013-04-17T16:12:09.510 回答