如何在数据库中分离对象并在白天运行代码?

时间:2015-01-27 02:10:24

标签: python django scrapy

我运行的数据太多,所以我想用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

但是如何根据我想要的结果进行思考呢? 请教我,谢谢你。

1 个答案:

答案 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个未处理的元素并进行处理。