Django send_mail "锁已存在. 退出.

1 投票
1 回答
1267 浏览
提问于 2025-04-16 15:46

我在使用Django的send_mail功能时遇到了问题。之前一切都很好,直到我尝试更改一些邮件设置,想要使用EMAIL_HOST_USER和EMAIL_HOST_PASSWORD。结果,我的测试邮件就发不出了。

我把邮件设置改回之前能用的那种,但现在邮件还是发不出去。我已经重启了一些东西,以确保当前的设置生效。当我运行命令'python manage.py send_mail'来测试时,得到了这样的反馈:

正在获取锁定... 锁定已经存在。退出。

在查看mailer.engine中的代码时:

def send_all():
    """
    Send all eligible messages in the queue.
    """

    lock = FileLock("send_mail")

    logging.debug("acquiring lock...")
    try:
        lock.acquire(LOCK_WAIT_TIMEOUT)
    except AlreadyLocked:
        logging.debug("lock already in place. quitting.")
        return
    except LockTimeout:
        logging.debug("waiting for the lock timed out. quitting.")
        return
    logging.debug("acquired.")

    start_time = time.time()

    dont_send = 0
    deferred = 0
    sent = 0

看起来是因为出现了'AlreadyLocked'这个异常,所以程序在发送邮件之前就退出了。如果真是这样,我该怎么打破这个锁定,重新开始呢?

1 个回答

7

很可能你的文件夹里有一个叫“锁文件”的东西('send_mail'),你只需要把它删掉就行。

撰写回答