如何在django中运行后端,在页面运行时将对象保存在数据库中?
例如,一个抓取器在后台无限期地运行,并使用文章(标题、摘要、url)更新模型页面显示那些已经在数据库中的内容,并可能在此期间(如在twitter上)显示一些您可以加载的抓取页面。
一种方法是用python-mysql脚本编写它,这样可以直接更新表。但是,有没有办法访问django-models界面呢?换句话说,django的方式是什么?
发布于 2011-05-11 01:12:36
简单的答案是,你不能直接从http请求中使用django,因为它不支持后台执行,也不支持websockets开箱即用。
实际上,你可以在stackoverflow上找到相当多的相关答案,太多了,不值一提,但很少有人真正给出答案。基本上,您应该能够使用以下工具实现您想要的功能:
一个更通用的答案,包括几个备选方案,可能超出了SO的范围,但如果你开始了,并有一些更精确的问题,请让我们知道。
编辑:当然,完全托管的芹菜系统的替代方案是良好的旧cron (如您所建议的)+一个允许您使用django模型的custom ./manage.py command,正如@DTing所建议的那样!
发布于 2011-05-11 01:14:04
您可以编写一个自定义管理命令,并设置一个cron作业以按所需的时间间隔执行它。
ajax可以用来将数据加载到已经打开的页面,新的请求应该正确地从数据库中拉出更新的数据。
发布于 2012-05-14 23:03:36
此外,如果你想要比Celery + Rabbit MQ简单一点的东西,并且不想在cron中浪费太多时间,django-extensions应用程序有一个相当巧妙的作业功能(http://packages.python.org/django-extensions/jobs_scheduling.html)。它只做每天/每小时/每周/每月的工作,但你只需要编辑你的crontab一次。
https://stackoverflow.com/questions/5953516
复制相似问题