Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Daemonize Django管理命令_Django_Sockets_Daemon_Celery - Fatal编程技术网

Daemonize Django管理命令

Daemonize Django管理命令,django,sockets,daemon,celery,Django,Sockets,Daemon,Celery,我正在尝试创建一个套接字应用程序,使用python的smptd和asyncore库在端口25中侦听传入的电子邮件,该应用程序应该可以访问Django ORM以采取必要的操作 到目前为止,我所做的是创建一个直接访问Django数据库的python脚本,并在supervisor下运行它,但这不是一个好的解决方案。合适的方法是使用管理命令或类似于任务队列(芹菜)的东西 如果我创建一个Django管理命令来运行这个长时间运行的套接字应用程序,我可以将它附加到supervisor吗?我需要对它进行后台监控

我正在尝试创建一个套接字应用程序,使用python的smptd和asyncore库在端口25中侦听传入的电子邮件,该应用程序应该可以访问Django ORM以采取必要的操作

到目前为止,我所做的是创建一个直接访问Django数据库的python脚本,并在supervisor下运行它,但这不是一个好的解决方案。合适的方法是使用管理命令或类似于任务队列(芹菜)的东西

如果我创建一个Django管理命令来运行这个长时间运行的套接字应用程序,我可以将它附加到supervisor吗?我需要对它进行后台监控吗?区别是什么?我如何将其后台化?我找到了django.utils.daemonize,但没有找到任何关于它的文档


用芹菜解决这个问题更合适吗?。我的应用程序侦听套接字,而据我所知,Celery正在等待触发器,我还没有在Celery中找到启动celeryd时自动启动的长时间运行任务的示例。

对于您的任务,我认为使用python+是最好的解决方案。因为芹菜的目标是执行任务,并运行计划任务。
当脚本为芹菜创建任务时,有一种退出方式,它将提供更好的性能。但是,只有当您需要运行定时后台任务,或者守护进程中有长时间执行的任务时,才应该使用芹菜。

作为管理命令的替代解决方案,我建议您让电子邮件服务器调用Django提供的web服务

这有几个好处

  • mailserver是从Django解耦的,因此如果需要,可以将它们放在不同的服务器上
  • 您需要的唯一守护程序是邮件程序
  • 不需要芹菜——Django不需要关心任何触发,因为Django组件是被动的

完全正确。对于manage.py命令来说,Supervisord是最好的选择