使用Django应用程序进行Cron工作

时间:2019-04-11 16:32:04

标签: python django cron django-cron

如果条件为True,我想使用cron任务删除media files

用户生成存储在Media文件夹中的导出文件。为了在后台清理导出文件,我有一个Cron任务,该任务循环遍历每个文件,并查看是否通过了过期延迟。

我使用了django-cron

示例:

媒体文件夹中的文件: Final_Products ___ 2019-04-01_17:50:43.487845.xlsx

我的Cron任务如下:

class MyCronExportJob(CronJobBase):
    """ Cron job which removes expired files at 18:30 """
    RUN_AT_TIMES = ['18:30']

    schedule = Schedule(run_at_times=RUN_AT_TIMES)
    code = 'app.export_cron_job'

    def do(self):
        now = datetime.datetime.now()
        media_folder = os.listdir(os.path.join(settings.MEDIA_ROOT, 'exports'))
        for files in media_folder:
            file = os.path.splitext(files.split(settings.EXPORT_TITLE_SEPARATOR, 1)[1])[0]
            if datetime.datetime.strptime(file, '%Y-%m-%d_%H:%M:%S.%f') + timedelta(minutes=settings.EXPORT_TOKEN_DELAY) < now:
                os.remove(os.path.join(os.path.join(settings.MEDIA_ROOT, 'exports'), files))

# settings.EXPORT_TOKEN_DELAY = 60 * 24

我编辑了crontab -e:

30 18 * * * source /home/user/Bureau/Projets/app/venv/bin/activate.csh && python /home/user/Bureau/Projets/app/src/manage.py runcrons --force app.cron.MyCronExportJob

然后我启动了service cron restart

但没有任何变化。我的文件仍然在那里。但是,由于他的日期大于now + settings.EXPORT_TOKEN_DELAY

,因此应将其删除

我正在将Ubuntu用于本地开发人员和FreeBSD作为生产服务器环境。

编辑:

我尝试了一些操作,但crontab目前无法正常工作。

1)* * * * * /bin/date >> /home/user/Bureau/Projets/app/cron_output ==>有效,因此crontab有效

2)我在控制台中运行了python manage.py runcrons ==>有效

3)我运行了此脚本(cron.sh):

source /home/user/.bashrc
cd /home/user/Bureau/Projets/app
pyenv activate app

python src/manage.py runcrons --force

deactivate

==>有效

4)我运行了此crontab行:

35 10 * * * /home/user/Bureau/Projets/app/utility/cron.sh

==>服务在10h32重新启动,我等到10h38:什么都没有!

0 个答案:

没有答案