我想定期在我的Django应用程序中计算一些信息。 我需要每秒选择并插入数据,并希望使用Django ORM。
我该怎么做?
答案 0 :(得分:1)
在shell脚本中,设置DJANGO_SETTINGS_MODULE变量并调用python脚本
export DJANGO_SETTINGS_MODULE=yourapp.settings
python compute_some_info.py
在compute_some_info.py中,设置django并导入模块(查看manage.py脚本如何设置运行Django)
#!/usr/bin/env python
import sys
try:
import settings # Assumed to be in the same directory.
except ImportError:
sys.stderr.write("Error: Can't find the file 'settings.py'")
sys.exit(1)
sys.path = sys.path + ['/yourapphome']
from yourapp.models import YourModel
YourModel.compute_some_info()
然后在cron作业中调用shell脚本。
或者 - 你可以继续跑步和睡觉(如果它每秒都更好) - 你仍然希望在网络服务器之外以及你自己设置的过程中。
答案 1 :(得分:0)
执行此操作的一种方法是创建自定义命令,并从cron或Windows调度程序中调用python manage.py your_custom_command
。
http://docs.djangoproject.com/en/dev/howto/custom-management-commands/
例如,创建myapp/management/commands/myapp_task.py
,其内容为:
from django.core.management.base import NoArgsCommand
class Command(NoArgsCommand):
def handle_noargs(self, **options):
print 'Doing task...'
# invoke the functions you need to run on your project here
print 'Done'
然后你可以像这样从cron运行它:
export DJANGO_SETTINGS_MODULE=myproject.settings; export PYTHONPATH=/path/to/project_parent; python manage.py myapp_task