在运行时同时保存django中的对象

时间:2011-05-10 16:52:04

标签: django-models

如何在django中运行后端,在页面运行时保存数据库中的对象?

示例刮刀在后面无限期地运行,并使用文章更新模型(标题,摘要,网址) 该页面显示了已经存在于数据库中的页面,并且可能同时抓取了许多页面(例如在Twitter上),您可以加载它们。

一种方法是在python-mysql脚本中编写它直接更新表。但有没有办法访问django-models界面?换句话说,django的做法是什么?

3 个答案:

答案 0 :(得分:1)

直截了当的答案是,你无法真正使用django as-it-is,来自http请求,因为它不支持后台执行,也不支持开箱即用的websockets。

你实际上可以在stackoverflow上找到相当多的相关答案,太多了不能提及它们,但很少有人真的把答案放在一起。基本上你应该能够实现你想要的东西:

一个更通用的答案,包括几个替代方案可能超出SO的范围,但如果您开始并有一些更精确的问题,请告诉我们。

编辑:当然,完全管理的芹菜系统的替代品是好的旧cron(正如你的建议)+一个custom ./manage.py command允许你使用django模型,正如@DTing建议的那样!

答案 1 :(得分:1)

您可以编写自定义管理命令docs并设置一个cron作业,以便按照所需的时间间隔执行它。

ajax可用于将数据加载到已打开的页面,新请求应正确从数据库中提取更新的数据。

答案 2 :(得分:1)

另外,如果你想要一些比Celery + Rabbit MQ更简单的东西,并且不想在cron中捣乱太多,那么django-extensions应用程序有一个非常漂亮的Jobs功能(http://packages.python .ORG / Django的扩展/ jobs_scheduling.html)。它只执行每日/每小时/每周/每月作业,但您只需编辑一次crontab。