Daemonize Django管理命令
我正在尝试创建一个套接字应用程序,使用python的smptd和asyncore库在端口25中侦听传入的电子邮件,该应用程序应该可以访问Django ORM以采取必要的操作 到目前为止,我所做的是创建一个直接访问Django数据库的python脚本,并在supervisor下运行它,但这不是一个好的解决方案。合适的方法是使用管理命令或类似于任务队列(芹菜)的东西 如果我创建一个Django管理命令来运行这个长时间运行的套接字应用程序,我可以将它附加到supervisor吗?我需要对它进行后台监控吗?区别是什么?我如何将其后台化?我找到了django.utils.daemonize,但没有找到任何关于它的文档Daemonize Django管理命令,django,sockets,daemon,celery,Django,Sockets,Daemon,Celery,我正在尝试创建一个套接字应用程序,使用python的smptd和asyncore库在端口25中侦听传入的电子邮件,该应用程序应该可以访问Django ORM以采取必要的操作 到目前为止,我所做的是创建一个直接访问Django数据库的python脚本,并在supervisor下运行它,但这不是一个好的解决方案。合适的方法是使用管理命令或类似于任务队列(芹菜)的东西 如果我创建一个Django管理命令来运行这个长时间运行的套接字应用程序,我可以将它附加到supervisor吗?我需要对它进行后台监控
用芹菜解决这个问题更合适吗?。我的应用程序侦听套接字,而据我所知,Celery正在等待触发器,我还没有在Celery中找到启动celeryd时自动启动的长时间运行任务的示例。对于您的任务,我认为使用python+是最好的解决方案。因为芹菜的目标是执行任务,并运行计划任务。
当脚本为芹菜创建任务时,有一种退出方式,它将提供更好的性能。但是,只有当您需要运行定时后台任务,或者守护进程中有长时间执行的任务时,才应该使用芹菜。作为管理命令的替代解决方案,我建议您让电子邮件服务器调用Django提供的web服务 这有几个好处
- mailserver是从Django解耦的,因此如果需要,可以将它们放在不同的服务器上
- 您需要的唯一守护程序是邮件程序
- 不需要芹菜——Django不需要关心任何触发,因为Django组件是被动的