我运行的数据太多,所以我想用20天来运行它们
以下是我的想法:
place = Place.objects.count() #place = 101
seperate_to_n_day = 20
print place/20 # 5
然后我必须运行它:
place_list = Place.objects.filter(id__gt=0,id__lte=5) #this month day1
place_list = Place.objects.filter(id__gt=5,id__lte=10) #this month day2
place_list = Place.objects.filter(id__gt=15,id__lte=20) #this month day3
....
place_list = Place.objects.filter(id__gt=80) #this month day20
但是如何根据我想要的结果进行思考呢? 请教我,谢谢你。
答案 0 :(得分:1)
尝试Crontab:django-crontab github。 它是一个django应用程序,它使用linux的crontab来完成预定的工作。
您可能希望在数据库中添加一个新列作为“已处理”,
并按示例添加预定作业,设置运行时间如下:
CRONJOBS = [
('0 20 * * *', 'myproject.myapp.cron.my_scheduled_job'),
]
和
python manage.py crontab add
通过这样做,您的代码将每天20:00运行。
并在您的cron.py
中def my_scheduled_job():
p = Place.objects.filter(processed=False)[:5]
p.do_something()
获取前5个未处理的元素并进行处理。