Веб-приложение Django - мониторинг локальной папки и импорт файлов csv в базу данных
У меня есть проект веб-приложения Django, который должен быть размещен в локальной сети. Среди прочих функций, требуется постоянно отслеживать локальную папку хранения (C: или D: или E:) на наличие csv файлов и импортировать их в базу данных (Postgresql). Я уже написал код для чтения файлов csv, импорта их в базу данных и перемещения этих файлов csv в другую папку (после импорта). Я не знаю, где я должен разместить этот код, чтобы он постоянно сканировал папку на наличие новых csv-файлов? Это не может быть интерфейс командной строки python. Я не полностью знаком с Django REST Framework и не уверен, применим ли он в данной области, поскольку файлы csv будут доступны в локальной папке. Любые советы или ссылки на примеры/библиотеки будут полезны.
Код для импорта:
def get_files():
csv_files = []
for file in os.listdir(os.getcwd()):
if file.endswith('.csv'):
csv_files.append(file)
return csv_files
def move_files_to_folder(csv_files, destination):
try:
os.mkdir("BackupFiles")
except:
print('BackupFiles Directory Already Exists')
finally:
for file in csv_files:
shutil.move(file, destination)
os.chdir(destination)
return csv_files
def import_to_db():
csv_files = get_files()
engine = create_engine(
url="postgresql://{0}:{1}@{2}:{3}/{4}".format(user, password, host, port, database))
for file in csv_files:
df = pd.read_csv(file, parse_dates=[1, 2], infer_datetime_format=True, encoding="utf-8")
df.rename(columns={'ItemNumber': 'ItemNumber_id'}, inplace=True)
df.to_sql('app_logdata', engine, if_exists='append', index=False)
print('Imported Data Successfully')
destination = os.getcwd() + os.sep + "BackupFiles"
move_files_to_folder(csv_files, destination)
print('CSV Files Moved To BackupFiles Folder', csv_files)
# os.chdir('...')
# print('App Folder = ', os.getcwd())
import_to_db()
После поиска я обнаружил, что есть несколько способов достижения цели. Использование Cron, планировщика, Rocketry и т.д.