Django models 运行时在django中并发保存对象

Django models 运行时在django中并发保存对象,django-models,Django Models,如何在django中运行一个后端,该后端在页面运行时将对象保存在数据库中 示例:一个scraper无限期地在后台运行,并使用文章(标题、摘要、url)更新模型 该页面显示的是数据库中已经存在的页面,同时可能还会显示一些您可以加载的页面(比如在twitter上) 一种方法是用直接更新表的python mysql脚本编写它。但是有没有办法访问django模型接口?换句话说,django是如何做到这一点的?简单的答案是,您不能通过http请求使用django,因为它不支持后台执行,也不支持现成的Web

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

示例:一个scraper无限期地在后台运行,并使用文章(标题、摘要、url)更新模型 该页面显示的是数据库中已经存在的页面,同时可能还会显示一些您可以加载的页面(比如在twitter上)


一种方法是用直接更新表的python mysql脚本编写它。但是有没有办法访问django模型接口?换句话说,django是如何做到这一点的?

简单的答案是,您不能通过http请求使用django,因为它不支持后台执行,也不支持现成的WebSocket

事实上,你可以在stackoverflow上找到很多相关的答案,太多了,不值得一提,但很少有人真正给出了答案。基本上,您应该能够通过以下方式实现您想要的:

  • 芹菜+兔子MQ,例如在后台异步运行任务
  • 在网页上添加ajax以保持页面刷新
包含多个备选方案的更通用的答案可能不在SO的范围内,但如果您开始使用并有一些更精确的问题,请告诉我们


编辑:当然,完全管理芹菜系统的另一种选择是好的旧cron(如您所建议)+a,它允许您使用django模型,如@DTing所建议的

直截了当的答案是,您不能通过http请求使用django,因为它不支持后台执行,也不支持现成的WebSocket

事实上,你可以在stackoverflow上找到很多相关的答案,太多了,不值得一提,但很少有人真正给出了答案。基本上,您应该能够通过以下方式实现您想要的:

  • 芹菜+兔子MQ,例如在后台异步运行任务
  • 在网页上添加ajax以保持页面刷新
包含多个备选方案的更通用的答案可能不在SO的范围内,但如果您开始使用并有一些更精确的问题,请告诉我们


编辑:当然,完全管理芹菜系统的另一种选择是好的旧cron(如您所建议)+a,它允许您使用django模型,如@DTing所建议的

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


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

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


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

此外,如果您想要比Celery+Rabbit MQ更简单的东西,并且不想在cron中过多地混日子,django extensions应用程序有一个非常灵活的作业功能(http://packages.python.org/django-extensions/jobs_scheduling.html)。它只做每日/每小时/每周/每月的工作,但你只需要编辑你的crontab一次。

此外,如果你想要比芹菜+兔子MQ简单一点的东西,并且不想在cron中混得太多,django extensions应用程序有一个非常巧妙的工作功能(http://packages.python.org/django-extensions/jobs_scheduling.html)。它只做每日/每小时/每周/每月的工作,但你只需要编辑你的crontab一次。

@Oliver:从那时起,主要是出于好奇,我对你在这个问题中找到的“背景工作”做了更多的研究。我没有编辑我在这方面的答案,因为你可以看到,使用芹菜仍然是唯一的选择异步任务的建议方法,但如果你对核心备选方案及其局限性感兴趣,那就去吧!@Oliver:从那时起,主要是出于好奇,我对你在这个问题中可以找到的“背景工作”做了更多的研究。在这方面我没有编辑我的答案,因为使用芹菜,就像你在read仍然是异步任务的唯一建议方法,但是如果您对核心替代方案及其局限性感兴趣,那么就这样做吧!