【问题标题】:Cron parser and validation in pythonpython 中的 Cron 解析器和验证
【发布时间】:2012-10-20 04:29:10
【问题描述】:

我目前正在 python 中运行一个 django Web 应用程序,我将用户输入的 cron 条目存储到数据库中。我想知道是否有任何 python 库/包可以在将这些条目存储到数据库之前对其进行验证。通过验证我的意思是正确的语法以及正确的范围(例如:月份不能是 15)。有没有人有什么建议?谢谢!

【问题讨论】:

  • 只为用户提供列表框或其他形式的可用选项。
  • 我认为这是不可能的,因为用户可以输入至少 60*24*31*12*7 唯一的有效条目,并且在列表框中列出所有这些并不会看起来很聪明。这忽略了语法中逗号、破折号和正斜杠的使用。

标签: python django cron


【解决方案1】:

由于接受的答案很老,同一个库现在有一个croniter.is_valid() 方法。来自docs

>>> croniter.is_valid('0 0 1 * *')  # True
>>> croniter.is_valid('0 wrong_value 1 * *')  # False

【讨论】:

    【解决方案2】:

    Croniter 包似乎可以满足您的需求。文档中的示例:

    >>> from croniter import croniter
    >>> from datetime import datetime
    >>> base = datetime(2010, 1, 25, 4, 46)
    >>> iter = croniter('*/5 * * * *', base)  # every 5 minites
    >>> print iter.get_next(datetime)   # 2010-01-25 04:50:00
    >>> print iter.get_next(datetime)   # 2010-01-25 04:55:00
    >>> print iter.get_next(datetime)   # 2010-01-25 05:00:00
    >>>
    >>> iter = croniter('2 4 * * mon,fri', base)  # 04:02 on every Monday and Friday
    >>> print iter.get_next(datetime)   # 2010-01-26 04:02:00
    >>> print iter.get_next(datetime)   # 2010-01-30 04:02:00
    >>> print iter.get_next(datetime)   # 2010-02-02 04:02:00
    

    根据code,它似乎也对输入的格式进行验证。您可能已经遇到过这个问题,但以防万一:)

    【讨论】:

    • 嗯,我确实遇到过,但认为它也没有进行验证。我很快尝试了一下,它似乎适合我的需要。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-20
    • 1970-01-01
    • 2015-09-28
    • 2019-04-21
    • 1970-01-01
    相关资源
    最近更新 更多