【问题标题】:how constantly run a script beside django如何在 django 旁边不断运行脚本
【发布时间】:2018-05-22 21:39:33
【问题描述】:

我有一个 Django 网站正在运行,我正在寻找一种方法来运行一个脚本,该脚本不断地从 Internet 获取一些数据并将它们插入到我的 Django 应用程序数据库中。

只要服务器启动,我如何保持脚本运行? (无需手动启动它 - 并且根本不想停止它!!) 我想芹菜不是我想要的!?!

,我如何在这个脚本中使用 Django ORM 将数据插入数据库? 我尝试了线程,但认为应该通过调用脚本或..来启动它。

【问题讨论】:

  • This 看起来很像!

标签: python django


【解决方案1】:

您确实可以使用 celery 来完成这项工作,并且您可以充分利用 ORM 而无需手动查询您的数据库。做一个任务,从互联网上获取项目并更新数据库。定义一个 celery 任务来做你想做的事(获取 + 保存)

 @app.task
 def fetching_script():
     response = requests.get(url)
     for item in response.content:
         instance = ModelInstance(**item)
         instance.full_clean()
         instance.save()

然后在你的芹菜配置中

  app.conf.update(
      CELERYBEAT_SCHEDULE={
          'fetch_and_save': {
             'task': 'path.to.your.fetching_script',
             'schedule': crontab(minute='*/15'),
          }
      }
  )

例如,这将每 15 分钟执行一次您的任务,您需要根据自己的需要或脚本运行的时间来调整时间。实现这一点的另一种方法是制作一个独立的脚本来完成这项工作(例如使用 DB 包装器)并将脚本放入 crontab 中,假设您在服务器端运行 Linux 发行版

【讨论】:

  • 抱歉,您的任务是指 python 脚本,对吗?我有点困惑
  • 我的意思是定义一个完整的 celery 任务,更新了我的例子
  • 您能否详细说明文件位置以及如何将其与 Django 集成。
猜你喜欢
  • 1970-01-01
  • 2014-11-06
  • 1970-01-01
  • 2018-10-12
  • 2015-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多