从CSV文件中读取数据,然后每隔1个小时在Django中删除该文件

时间:2019-05-04 08:48:30

标签: django django-views celery django-celery celerybeat

我有一个admin.csv文件,该文件每1小时生成一次。我想读取该csv文件的最后一行并将数据存储在django网站中我的应用程序模型中。值存储后,我也想删除该文件,如果1小时后什么都没有存储,并且没有读取文件并且没有保存数据,则网站应该显示错误。

我完全不知道如何执行此操作。我认为芹菜可以帮助我,但是我不知道该怎么做。

我的models.py文件:

class Admin(models.Model):
    Input_IP   = models.GenericIPAddressField(protocol='both', unpack_ipv4=False)
    Skip_Frames = models.PositiveIntegerField()
    Save_Video  = models.BooleanField()
    Id_Display  = models.BooleanField()


    def __str__(self):
        return "{},{},{},{}".format(self.Input_IP, self.Skip_Frames, self.Save_Video, self.Id_Display)

我的应用程序文件夹中的我的task.py文件:

@task(name="kay")
def oks():
    with open('\\home\\aakash\\hi.csv') as r:
        reader = csv.reader(r)
        for row in reader:
            _, created = Admin.objects.get_or_create(Input_IP=row[0],Skip_Frames=row[1],Save_Video=row[2],Id_Display=row[3])

此外,我在项目文件夹中有一个celery.py文件:

from __future__ import absolute_import, unicode_literals
import os
from celery import Celery


# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'hughes.settings')

app = Celery('proj')

# Using a string here means the worker don't have to serialize
# the configuration object to child processes.
# - namespace='CELERY' means all celery-related configuration keys
#   should have a `CELERY_` prefix.
app.config_from_object('django.conf:settings', namespace='CELERY')

# Load task modules from all registered Django app configs.
app.autodiscover_tasks()

@app.task(bind=True)
def debug_task(self):
    print('Request: {0!r}'.format(self.request))

我的admin.csv文件是:

Input_IP    Skip_Frames Save_Video  Id_Display
192.168.1.97    100          True   False
191.168.43.97   91           False  True
191.168.43.97   1            True   True
191.168.4.61    11           False  False
191.135.4.12    99           True   True

0 个答案:

没有答案