【问题标题】:How to replace launchd scheduling with a Python program如何用 Python 程序替换启动调度
【发布时间】:2010-02-11 12:07:37
【问题描述】:

Mac OS X 系统启动程序launchd 启用作业调度(类似于cron。)通过创建一个launchd 代理,可以通过其中一个触发程序以下事件:

  • 时间间隔已过
  • 某个日历日期已到
  • 文件路径已修改
  • 某物已被放置在某个目录(队列目录)中
  • 已安装卷

我以前依靠 launchd 来启动一组 Python 脚本来自动化 OS X 系统。但是,由于添加新脚本通常还需要安装新的启动代理来启动它,所以我想将 launchd 排除在外。 Python 程序应该等待并观察上述事件的发生,然后调度适当的例程。

是否有适合检测上述事件的 Python 模块?或者,作为一个更普遍的问题,我如何使用 Python 替换 launchd (可能通过 AppScript 桥接 AppleScript)?对不起,如果问题相当模糊。阅读建议也值得赞赏。

【问题讨论】:

    标签: python macos launchd


    【解决方案1】:

    对于文件系统监控问题,也许您正在寻找pyfsevents。根据this post

    FSEvents API 通知您的应用程序 当文件系统发生变化时。 您可以使用文件系统事件来 监视目录是否有任何更改, 例如创建、修改或 删除包含的文件和 目录。

    【讨论】:

    • 谢谢,我可以将它用于卷检测和队列目录。仍在寻找可以轻松观看定时事件的东西。
    • @D-Bug:要在经过一段时间后安排事件,您应该能够使用 sched 模块——它在标准库中。您可能还想查看这个 SO 答案:stackoverflow.com/questions/373335/…
    • 关于 pyfsevents 的后续问题:似乎对 pyfsevents.listen() 的调用会阻塞整个 python 进程,而不仅仅是调用线程。我想要一个线程等待传入的文件系统事件。有什么办法吗?
    • @D-Bug:嗯……对不起;我对 pyfsevents 没有第一手经验。
    • 也许如果你发布一个新的问题,以 pyfsevents 作为标签,它会吸引了解该主题的人
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-29
    • 1970-01-01
    相关资源
    最近更新 更多