django - 如何从基于 Django 的站点管理任务的停止或重新启动?
问题描述
我将在服务器中运行一个脚本,该脚本将自动在数据库中创建模型实例。这个想法是使用一个无限循环(例如while True :),它将无休止地创建实例,直到我以某种方式停止它。我想使用 Django 从我的网站上很好地检查我的数据库有多大,然后我想从那里停止或重新启动它。这里有什么好的方法?我在考虑芹菜,但我不知道我怎么会不知道如何阻止它,它看起来有点矫枉过正。有什么建议吗?
解决方案
一个简单的解决方案是有一个类将脚本的名称以及它是否应该继续运行保存到数据库:
class ScriptTracker():
name = models.Charfield()
keep_running = models.BooleanField()
然后,您的脚本将在每个循环中检查 db 以查看它是否应该停止:
def my_script():
while True:
if not ScriptTracker.objects.get(name="my_script").keep_running:
# stop running
return
# creating an instance in the db
MyObject.objects.create(name="helloworld")
- 创建 ScriptTracker 对象
ScriptTracker.objects.create(name="my_script", keep_running=True)
- 启动您的脚本运行,如果将脚本构建为管理命令,则可以简单地完成:
python manage.py my_script
推荐阅读
- javascript - 通过内容脚本在 XML 文件中注入 javascript
- angular - 具有指定日期/时间范围的角度日期时间选择器
- c# - EF Core 一对多还是多对多?用户<-->朋友
- r - 如果 RStudio 编辑器主题为深色,则 kableExtra 表的内容可见
- algorithm - 使用并发在文件中查找 k 个最常见的单词
- python - Python 和 SQL - 检查 Row 是否存在的最有效方法 - 如果不存在,则插入它
- android - Android 屏幕通知 LED
- php - PHP - preg_replace - 如果当前为空,则使用其他替换
- database - 表中基于两列的唯一行
- java - 如何在 QuickSelect 中实现重复