【问题标题】:Problem with python croniter with all asterisks带有所有星号的python croniter的问题
【发布时间】:2019-03-25 23:25:38
【问题描述】:

我在 python 中编写了一个脚本来执行 FTP 传输,它将每分钟在 crontab 中运行。该脚本查询 mysql 数据库并使用 croniter 库翻译 cron 语言。如果当前日期和时间与编程的日期一致,将执行 ftp 事务。

它似乎可以正常工作,除非编程是 cron 是星号中的分钟和小时。加上日期好像没有问题。

crontotime 函数在变量“programmed”中接收以 cron 语言编程的时间和日期:“* * * * *”或“05 17 * * *”,并将其转换为日期和时间。

https://crontab.guru/寻求帮助

谢谢。

 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 
========================================================

【问题讨论】:

  • 什么是打印ERROR?调用crontotoime的代码在哪里?

标签: python cron-task


【解决方案1】:
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

计划:#* * * * *# 2019-03-26 10:58

例如:scheluded 是 * * * * * 时间是 2019-03-26 11:57,croniter return 2019-03-26 10:58 多 1 分钟,然后任务永远不会运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    • 1970-01-01
    • 2022-11-16
    • 2011-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多