-3

我有的代码

def callback(message):
   if not message:
      Mailer().send_feed_error_report('Empty Message')
   if "message_type" not in message:
      Mailer().send_feed_error_report('"message_type" not in message')


class Mailer():
   def send_feed_error_report(self, error_info):
      send_mail(error_info)

callback(message)

send_mail只会发邮件。这是一个发送邮件的简单功能。

我想要

  • 仅在 1 小时后发送邮件
  • 其他功能/代码必须并行运行,所以我想避免使用time.sleep()
4

1 回答 1

2

Python中的调度

您可以使用threading.Timer安排函数在指定时间(延迟)后运行。

请参阅 Python 的事件调度程序模块sched

这个怎么运作

以秒为单位传递延迟将在给定延迟后启动线程并独立于主线程执行它。因此不会阻塞你的主线程。

您可以像使用常规线程一样将参数args作为第三个参数传递给您的函数。

delay_by = 1 * 60 * 60 # in seconds
threading.Timer(delay_by, send_mail).start()

来源: 在给定时间启动函数

于 2021-08-06T16:56:50.790 回答