gpt4 book ai didi

python - 如何在 Dropbox 更新特定目录后触发脚本执行?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:08:47 26 4
gpt4 key购买 nike

我想在 Dropbox 更新对目录所做的更改(也可以在子目录中进行更改)后自动执行流程。

为了使其正常工作,监控脚本应等待 Dropbox 报告同步状态已完成,因为我不想在仅更新某些文件时启动操作,或并行启动多个执行。

这必须在 Linux 上运行,我已经配置了 Dropbox headless 守护进程来运行。我还有 dropbox.py 脚本,它似乎能够报告是否进行了同步。

./dropbox.py status
Up to date

我正在考虑使用 cron 作业,但我确实想尽量减少 dropbox 完成同步与我触发执行之间的延迟。每分钟都使用 Cron 似乎不是一个好方法,我更喜欢使用某种触发器的方法,而不是愚蠢的轮询。

最佳答案

我不知道 Dropbox 有哪些触发器可用。这似乎是您需要联系他们的支持部门的事情,因为他们毕竟是一项商业服务。

如果您发现自己被轮询所困,您可以将 python 脚本包装在一个循环中以检查状态更改。

#!/usr/bin/env bash

postprocess() {
# This function contains stuff you run after sync is complete.
}

# Initialize a flag.
dirty=true

# How many seconds between checks?
interval=1

# Poll every second. You could increase this number to reduce impact.
while sleep $interval; do

if $dirty; then
if /path/to/dropbox.py status | grep -q 'Up to date'; then
dirty=false
postprocess
else
# Still syncing, no state change, try again in $interval seconds
continue
fi
else
if /path/to/dropbox.py status | grep -q 'Up to date'; then
# No updates happening, no state change
continue
else
dirty=true
fi
fi

done

我还没有对此进行过明显的测试,但也许您可以根据自己的需要对其进行调整。请注意,较短的间隔意味着脚本将更准确地检测到更改,较长的间隔意味着它可能会错过它们。即使间隔为 1 秒,我希望 Dropbox 客户端可以在 1 秒内启动并完成更改,因此您可能会错过一些东西。

如果您知道检测触发器的方法,请在此处发布您的代码,您会发现很多人都乐于帮助实现它。没有代码调试的问题是..好吧,实际上是题外话! :)

关于python - 如何在 Dropbox 更新特定目录后触发脚本执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32274059/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com