我有一个Django网站正在运行,我正在寻找一种方法来运行一个脚本,不断从Internet获取一些数据并将它们插入我的Django应用程序数据库。
只要服务器启动,我怎么能保持脚本运行? (无需手动启动 - 并且根本不想停止它!) 我猜芹菜不是我想要的!?!
,如何在此脚本中使用Django ORM将数据插入数据库? 我试过线程,但认为它应该通过调用脚本或..
来启动答案 0 :(得分:2)
您确实可以使用芹菜来完成这项工作,您可以充分利用ORM,而无需手动查询数据库。创建一个将从Internet获取项目并更新数据库的任务。定义一个芹菜任务,它会做你想要的(取出+保存)
@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发行版