Python 异步函数不更新时间戳

问题描述 投票:0回答:0

我有一台机器正在运行一些我需要密切关注的脚本。

我在 python 中设置了一个脚本,每小时向我发送电子邮件。

我想为其添加时间戳,以便我可以一目了然地看到机器发送的最后一条消息是什么时候,以了解它正在运行。当测试每 120 秒发送一次电子邮件时,我发现电子邮件发送部分工作正常,但时间戳没有更新。无法弄清楚我做错了什么。

打印语句在每次循环后返回相同的时间戳,电子邮件也是如此。

Email Sent at 18 December 2024 13:16:50
Email Sent at 18 December 2024 13:16:50
Email Sent at 18 December 2024 13:16:50

我的代码:

import asyncio

#Main Event loop to send emails
async def send_email(timestamp):

    import datetime as dt
    timestamp = dt.datetime.now()

    import socket
    hostname = socket.gethostname()

    import getpass
    user = getpass.getuser()

    timestamp_string = timestamp.strftime("%d %B %Y %H:%M:%S")
    subject = f"Machine Status Check - {timestamp_string}"

    html_body =     f"""
                        Machine Name: {hostname}\n
                        User ID: {user}
                    """
    to = "[email protected]"
   
    while True:

        import win32com.client
        outlook = win32com.client.gencache.EnsureDispatch('Outlook.Application')

        new_email = outlook.CreateItem(0)
        new_email.To = to
        new_email.Subject = subject
        new_email.HTMLBody = html_body

        new_email.Send()

        print(f"Email Sent at {timestamp_string}")
        await asyncio.sleep(120)

#Run the asyncio event loop
async def main():

    await send_email()

#Start the event loop
asyncio.run(main=main())
python python-asyncio pywin32 python-datetime
© www.soinside.com 2019 - 2024. All rights reserved.