我已经在python中制作了一个脚本来执行FTP传输,该传输将每分钟在crontab中运行。该脚本查询mysql数据库并使用croniter库翻译cron语言。如果当前日期和时间与编程日期匹配,则将执行ftp事务。
它似乎可以正常工作,除非编程为cron时(用星号表示分钟和数小时)。有了日期,似乎没有问题。
crontotime函数在变量“ programmed”中接收以cron语言编程的时间和日期:“ * * * * *”或“ 05 17 * * *”,并将其转换为日期和时间。
谢谢。
def crontotime(self,programada):
crontask = croniter.croniter(programada)
nextcrontask = crontask.get_next(datetime.datetime).strftime("%Y-%m-%d %H:%M")
return nextcrontask
结果:如果没有定义的分钟和小时,则会出现错误
========================================================
Now: 2019-03-25 16:56
Scheluded: #* 16 * * *# 2019-03-25 16:00
========================================================
Now: 2019-03-25 16:56
Scheluded: #56 16 * * *# 2019-03-25 16:56
========================================================
Now: 2019-03-25 17:05
Scheluded #* * * * *# 2019-03-25 16:06 ERROR
========================================================
Now: 2019-03-25 17:05
Scheluded: #05 17 * * *# 2019-03-25 17:05
========================================================
答案 0 :(得分:0)
class Crontask(object):
def crontask(self,datoscron,ahora):
for row_task in datoscron:
programada = (' '.join(i for i in row_task[2:7]).strip())
nuevatarea = Crontask().crontotime(programada)
if nuevatarea == ahora:
FTPtask().ftptask(row_task)
LogTransfer().log_tareas(row_task)
else:
print("========================================================")
print("///////////////// NO TRANSFER /////////////////////////")
print("========================================================")
return
def crontotime(self,programada):
crontask = croniter.croniter(programada)
nextcrontask = crontask.get_next(datetime.datetime).strftime("%Y-%m-%d %H:%M")
return nextcrontask
================================================ ========= 现在:2019-03-26 11:57
例如:scheduded为* * * * *并且时间为2019-03-26 11:57,croniter再返回2019-03-26 10:58 1分钟,那么任务就永远不会运行。