如何实现置顶功能 django

 我来答
l8...5@33sn.cc
2017-03-02 · TA获得超过376个赞
知道答主
回答量:301
采纳率:0%
帮助的人:102万
展开全部
实现思路:
1.首先把需要自动执行的django method写成django command
2.将自己定义的django command添加到cron中使用cron服务实现定期执行

Part1 在django工程中添加自定义的django command
1.我们自己建立的
application叫做myapp,首先在这个app目录下,我们需要新建management目录,这个目录里应该包
括:__init__.py(内容为空,用于打包)和commands目录,然后在commands目录下包括:__init__.py和
mycommand.py ,其中 mycommand.py就是用于我们自定义command的方法,目录的树状结构如下:

myapp/
__init__.py
models.py
management/
__init__.py
commands/
__init__.py
mycommand.py
tests.py
views.py

2.书写command的内容mycommand.py,简单示例如下:

from django.core.management.base import BaseCommand, commandError

class Command(BaseCommand):
def handle(self, *args, **options):
print "hello world"

我们把BaseCommand类关联进来,使用command类和handle方法来作为框架,如上,这个command实现的就是打印 逗hello world地.

通过以上我们就可以使用python manage.py mycommand的方式来运行我们自己的django命令了。

想了解更详细,看这里。

Part2 使用cron来定期执行django command

1、ubuntu下cron开启/关闭/重启
配置文件一般为/etc/init.d/cron
启动:sudo /etc/init.d/cron start
关闭:sudo /etc/init.d/cron stop
重启:sudo /etc/init.d/cron restart
sudo service cron restart
重新载入配置:sudo /etc/init.d/cron reload

可以用ps aux | grep cron命令查看cron是否已启动

2、新增 cron 任务
推荐使用crontab -u
用户名
-e命令添加自定义的任务(编辑的是/var/spool/cron下对应用户的cron文件,在/var/spool/cron下的crontab文件
不可以直接创建或者直接修改,crontab文件是通过crontab命令得到的)。

在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab -u root -e

a、直接执行命令行
每隔5秒打印一个字符串逗Hello World地,保存至文件/home/linjiqin/HelloWorld.txt中,cron格式如下:

*/5 * * * * echo "Hello World" >> /home/linjiqin/HelloWorld.txt

b、shell文件
每隔5秒调用一次/home/linjiqin/HelloWorld.sh文件,cron 格式如下:

*/5 * * * * /home/linjiqin/HelloWorld.sh

文件/home/linjiqin/HelloWorld.sh的内容如下:

#!/bin/sh
cd /home/linjiqin/
echo "Hello World" >> HelloWorld.txt

注意:记得编辑过后要重启,不然无效。
sudo service cron restart
sudo service cron status
crontab -l #查看cron
crontab -e #修改cron

cron常用范例:

每隔5秒执行一次:*/5 * * * * ?
每隔1分钟执行一次:0 */1 * * * ?
每天23点执行一次:0 0 23 * * ?
每天凌晨1点执行一次:0 0 1 * * ?
每月1号凌晨1点执行一次:0 0 1 1 * ?
每月最后一天23点执行一次:0 0 23 L * ?
每周星期天凌晨1点实行一次:0 0 1 ? * L
在26分、29分、33分执行一次:0 26,29,33 * * * ?
每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式