首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在运行时并发保存django中的对象

在运行时并发保存django中的对象
EN

Stack Overflow用户
提问于 2011-05-11 00:52:04
回答 3查看 120关注 0票数 0

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

例如,一个抓取器在后台无限期地运行,并使用文章(标题、摘要、url)更新模型页面显示那些已经在数据库中的内容,并可能在此期间(如在twitter上)显示一些您可以加载的抓取页面。

一种方法是用python-mysql脚本编写它,这样可以直接更新表。但是,有没有办法访问django-models界面呢?换句话说,django的方式是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-11 01:12:36

简单的答案是,你不能直接从http请求中使用django,因为它不支持后台执行,也不支持websockets开箱即用。

实际上,你可以在stackoverflow上找到相当多的相关答案,太多了,不值一提,但很少有人真正给出答案。基本上,您应该能够使用以下工具实现您想要的功能:

  • 芹菜+ rabbitMQ,例如。在网页上的background
  • ajax中异步运行任务的http://webcookies.org/2009/09/10/rabbitmq-celery-and-django/,以保持刷新页面

一个更通用的答案,包括几个备选方案,可能超出了SO的范围,但如果你开始了,并有一些更精确的问题,请让我们知道。

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

票数 1
EN

Stack Overflow用户

发布于 2011-05-11 01:14:04

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

ajax可以用来将数据加载到已经打开的页面,新的请求应该正确地从数据库中拉出更新的数据。

票数 1
EN

Stack Overflow用户

发布于 2012-05-14 23:03:36

此外,如果你想要比Celery + Rabbit MQ简单一点的东西,并且不想在cron中浪费太多时间,django-extensions应用程序有一个相当巧妙的作业功能(http://packages.python.org/django-extensions/jobs_scheduling.html)。它只做每天/每小时/每周/每月的工作,但你只需要编辑你的crontab一次。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5953516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档