У меня есть файл 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)
Мой файл tasks.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