发送一个锁文件到django-post_office send_queued_mail

svmlkihl  于 2023-03-24  发布在  Go
关注(0)|答案(3)|浏览(89)

这看起来并不难,但我被难住了。我已经把django-post_office集成到了我的代码库中,现在我正在测试我可以为排队的电子邮件设置cron作业,如文档中所述:
https://github.com/ui/django-post_office
无论我是在命令行还是在crontab中运行,我都会遇到同样的问题:

python manage.py send_queued_mail lockfile='/home/gbeadmin/tmp/post_office.lock'
Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/home/gbeadmin/webapps/gbe2016test/lib/python2.7/django/core/management/__init__.py", line 399, in execute_from_command_line
    utility.execute()
  File "/home/gbeadmin/webapps/gbe2016test/lib/python2.7/django/core/management/__init__.py", line 392, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/gbeadmin/webapps/gbe2016test/lib/python2.7/django/core/management/base.py", line 242, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/home/gbeadmin/webapps/gbe2016test/lib/python2.7/django/core/management/base.py", line 285, in execute
    output = self.handle(*args, **options)
  File "/home/gbeadmin/.local/lib/python2.7/site-packages/post_office/management/commands/send_queued_mail.py", line 33, in handle
    options['lockfile'])
KeyError: 'lockfile'

经过深入研究,我发现我应该能够指定锁定文件,所以我尝试了以下方法:

python manage.py send_queued_mail --lockfile='<path to lock file>'

这给了我一个错误:

Usage: manage.py send_queued_mail [options] 

manage.py: error: no such option: --lockfile

我还尝试了文档中列出的'-L'选项,基本结果相同。
我迷路了-我没有看到我的语法错误,我没有看到任何其他方法来设置锁定文件...
其他注意事项:

  • 我正在参加网络派系竞选
  • 我正在运行django 1.6(是的,我想升级,这是在路上,但不能在此票证的范围内)
  • django-post_office - 2.0.8
  • Python 2.7
m0rkklqb

m0rkklqb1#

我很抱歉听到你的问题,但问题是在管理命令中。你看,KeyError意味着'lockfile'在字典中不存在。进一步的调查得出问题的根本原因是在管理命令中。管理命令语法仅适用于Django 1.8及更高版本。他们目前正在放弃对Django〈1.8的支持。希望这能有所帮助!

dluptydi

dluptydi2#

我在使用django-post-office时也遇到了同样的问题。降级到版本(1.1.2,1.1.0,1.0.0)也没有帮助。
仅供参考,我使用的是Python 2.7.7和Django版本(1,4,2,'final',0)
我尝试了django-mailer. Link Here,它像一个魅力。遵循与django-post-office相同的步骤。

pip install django-mailer

将以下内容添加到我的settings.py文件中

INSTALLED_APPS = [
    ...
    "mailer",
    ...
]

EMAIL_BACKEND = "mailer.backend.DbBackend"

之后,我运行了这个命令

python manage.py syncdb

它创建了以下表格:
正在创建表mailer_message
创建表mailer_dontsendentry
创建表格mailer_messagelog
代码中不需要进一步更改。
在我在应用程序中发送了一些邮件之后,它们被添加到DB表mailer_message中
为了发送那些邮件,我使用了Django-Mailer添加的管理命令

python manage.py send_mail

消息发送后,它们会从数据库表中删除,并添加到日志表- mailer_messagelog中。您可以创建一个cron作业,以便在给定的时间间隔后运行此命令。
希望这个有用。

13z8s7eq

13z8s7eq3#

简短的回答帮助了我:
reload your computer
详情如下:
我遇到了同样的错误,而试图发送电子邮件与send_queued_mail命令.但在此之前,我改变了我的设置,这个库冻结.我试图重新加载项目,但只有reloading my computer帮助,我遇到了这个错误两次,和重新加载计算机解决了问题.

相关问题