Python 从Django项目启动多个Django开发服务器

Python 从Django项目启动多个Django开发服务器,python,django,fork,os.system,Python,Django,Fork,Os.system,我正在为Django项目编写一个基于web的代码编辑器。在编辑器中,我希望启动Django runserver命令,而不会干扰编辑器本身的服务器。下面是我使用的代码。服务器(端口9999)已启动,但当我更改刚刚启动其服务器的项目的代码时,两台服务器都停止。错误为“该端口已在使用” 您需要投入更多的工作来管理启动的服务器。如果您多次调用runserver(request,project\u slug),那么该资源将被绑定到该端口的另一个后台进程占用,而现在您甚至没有一个PID文件来引用该进程 您需

我正在为Django项目编写一个基于web的代码编辑器。在编辑器中,我希望启动Django runserver命令,而不会干扰编辑器本身的服务器。下面是我使用的代码。服务器(端口9999)已启动,但当我更改刚刚启动其服务器的项目的代码时,两台服务器都停止。错误为“该端口已在使用”


您需要投入更多的工作来管理启动的服务器。如果您多次调用
runserver(request,project\u slug)
,那么该资源将被绑定到该端口的另一个后台进程占用,而现在您甚至没有一个PID文件来引用该进程

您需要添加一些启动/终止端口的技巧,并且您肯定需要使用低级网络库来实现它——不要手动选择端口,因为您无法保证系统上的其他进程不会占用该端口并导致应用程序进入不可恢复的错误状态


不过,幸运的是,您有一个开源项目,可以在单独的线程上在后台正确管理Django服务器实例。以下是我鼓励您为自己的目的查看和采用的编辑器。

为什么编辑器运行在dev服务器上,而不是运行在更稳定/可扩展的服务器上?因为我不知道如何使用其他任何东西。我现在只想要一些简单的个人用品。
def runserver(request, project_slug):
    project = Project.objects.get(slug=project_slug)
    import os
    os.system('cd %s; pwd; env; DJANGO_SETTINGS_MODULE=%s.settings; rm nohup.out; nohup python manage.py runserver 0.0.0.0:9999 &' % (project.get_current_directory(), project.slug))
    return HttpResponseRedirect(request.META['HTTP_REFERER'])