如何服务Django项目,以便并行处理许多传入的请求



我有一个django项目,带有一些视图 my_view

我的视图依次运行,但可能需要几秒钟才能完成。

我希望能够同时向此视图发送多个获取请求,并并行处理。

目前,它们只是顺序运行。

我该如何实现?

my_view不必异步。

Docker文件看起来像:

FROM python:3.6

RUN apt-get update 
    && apt-get install -y --no-install-recommends 
        postgresql-client 
    && rm -rf /var/lib/apt/lists/*
WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

停止使用runserver进行本地开发!此命令仅适用于本地开发,并且不保证安全和同意。

为您的答案,要正确处理这些查询,您有几个选择:

使用具有足够数量的工人

的WSGI服务器

如果此视图的执行时间不会超过X次,则可以将工人号码设置为高于X的任何内容(取决于您的需求),以确保应用程序的可访问性。

使用任何类型的任务队列卸载长期运行任务

通过将任务卸载到例如芹菜中,您可以立即释放工作人员。只需确保不要在一个请求中等待任务执行,而要提供某种方式检查任务的状态即可。

使用异步代码(在Django-channels的帮助下)进行长期运行的任务

如果您在此视图中有很多IO,则可以使其异步,因此工人在等待IO准备就绪时可以做其他事情。

最新更新