-1

假设我正在听是否发生了随机事件。(具体来说,我是通过 webhook 执行此操作的。收到 webhook 后,我执行代码)

我不希望我的 webhook 事件在给定的时间范围内多次执行代码,例如 30 分钟。但是,我不是这样说的:

"Received webhook?" 
"Wait 30 minutes until you can listen to webhooks again." 

不知何故,我想将一天中的 24 小时分成30 分钟的48 个部分,然后 webhook 只能在给定部分激活它的事件一次。[澄清:如果是 20 分钟,那么 20 分钟将有 72 个部分]

例如:代码在 14:21 激活。我希望它激活的下一个可能时间是 14:30。直到 14:30,我不希望代码激活比它已经做过的更多(一次)。然后再次从 14:30 到 15:00,我希望它最多激活一次,依此类推。

我不一定需要像这样划分一天,我只是想解释我需要什么。

我希望我能清楚地解释自己。

4

1 回答 1

1

假设您有两个函数可以启用enabledisable禁用 webhook。首先添加一个SIGALRM启用钩子的信号处理程序:

signal.signal(signal.SIGALRM, lambda: enable())

当钩子被触发时,您可以执行以下操作:

disable()
signal.alarm(1800)

这将禁用您的钩子,并要求您的程序SIGALRM在 30 分钟内收到信号。当信号到达时,您的处理程序将调用enable以启用您的网络挂钩。

于 2021-08-08T21:44:03.987 回答