首页 > 解决方案 > 运行 Django 和 GRPC 相同的应用程序

问题描述

我正在研究 Django rest 框架项目,我也需要使用 gRPC。但我不知道如何同时运行 HTTP 服务器和 gRPC 服务器。与 .NET 一样,它可以选择同时侦听 HTTP1 和 HTTP2。

当我使用命令时

python manage.py runserver

然后 gRPC 不起作用

当我使用

python manage.py grpcserver

然后 Rest API 不起作用

这个问题有什么解决办法吗?谢谢。

我使用了包:djangorestframeworkdjango-grpc

标签: pythondjangogrpc

解决方案


解决了

我刚刚创建了一个新的自定义管理命令并运行它

from django.core.management.base import BaseCommand
from subprocess import Popen
from sys import stdout, stdin, stderr
import time
import os
import signal


class Command(BaseCommand):
    help = 'Run all commands'
    commands = [
        'python manage.py grpcserver',
        'python manage.py runserver'
    ]

    def handle(self, *args, **options):
        proc_list = []

        for command in self.commands:
            print("$ " + command)
            proc = Popen(command, shell=True, stdin=stdin,
                         stdout=stdout, stderr=stderr)
            proc_list.append(proc)

        try:
            while True:
                time.sleep(10)
        except KeyboardInterrupt:
            for proc in proc_list:
                os.kill(proc.pid, signal.SIGKILL)

推荐阅读