如何按天将数据库中的对象和 运行 代码分开?
How can I seperate the objects in database and run the code by day?
我的数据太多运行,所以我想用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
但是如何让这个想法变成我想要的结果呢?
求教,谢谢
试试 Crontab:django-crontab github。
这是一个使用 linux 的 crontab 来执行预定作业的 django 应用程序。
您可能想在数据库中添加新列 "processed"、
并按照示例添加预定作业,设置 运行 时间如下:
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 个未处理的元素并处理它们。
我的数据太多运行,所以我想用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
但是如何让这个想法变成我想要的结果呢? 求教,谢谢
试试 Crontab:django-crontab github。 这是一个使用 linux 的 crontab 来执行预定作业的 django 应用程序。
您可能想在数据库中添加新列 "processed"、
并按照示例添加预定作业,设置 运行 时间如下:
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 个未处理的元素并处理它们。