Веб-приложение 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 и т.д.

Вернуться на верх