首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用全星号的python croniter的问题

使用全星号的python croniter的问题
EN

Stack Overflow用户
提问于 2019-03-26 07:25:38
回答 1查看 570关注 0票数 0

我用python编写了一个脚本来执行FTP传输,它将每分钟在crontab中运行一次。该脚本查询mysql数据库并使用croniter库转换cron语言。如果当前日期和时间与编程日期匹配,则将执行ftp交易。

它似乎工作正常,除了当编程是cron是分钟和小时的星号。从日期上看,似乎没有问题。

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

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

谢谢。

代码语言:javascript
复制
 def crontotime(self,programada):
        crontask = croniter.croniter(programada)
        nextcrontask = crontask.get_next(datetime.datetime).strftime("%Y-%m-%d %H:%M")
        return nextcrontask

结果:如果没有定义分钟和小时,则会出现错误

代码语言:javascript
复制
========================================================
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 
========================================================
EN

回答 1

Stack Overflow用户

发布于 2019-03-26 19:06:29

代码语言:javascript
复制
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

=== Now: 2019-03-26 11:57

Scheluded:# *# 2019-03-26 10:58

例如: scheluded为*,时间为2019-03-26 11:57,croniter返回2019-03-26 10:58 1分钟,则任务永远不会运行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55347806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档