- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我找不到有关 Gunicorn/Django 进程/线程生命周期的文档。
假设在 process_response() 中间件 Hook 期间生成了一个守护线程。 AFAIK 此线程不会阻止 HTTP 响应。但是,它会阻塞生成它的线程吗?在工作进程准备好处理另一个请求之前,Gunicorn 是否会等待此线程完成将其加入主线程,还是会分离此线程?
data_collection/tasks.py:
from celery import shared_task
@shared_task(ignore_result=True)
def add_event(event_name, event_body):
...
client.add_event(event_name, event_body)
data_collection/middleware.py:
import threading
from data_collection.tasks import add_event
class DataCollectionMiddleware:
def process_response(self, request, response):
...
thread = threading.Thread(target=add_event.delay, args=("Page_Views", event_body))
thread.setDaemon(True)
thread.start()
更多细节:
我编写了一个自定义中间件类,用于将一些数据发送到外部队列 (RabbitMQ),稍后由 celery worker 异步检索和处理这些数据。我不希望这个在线排队调用阻止客户端的响应,所以我将该函数 (add_event.delay()) 包装在一个“守护进程”线程中(la http://www.artfulcode.net/articles/threading-django/)。如果出现网络中断并且重试策略有很长的限制,则此线程可能会运行很长时间。在那种情况下,这些线程会阻塞我的 Gunicorn 工作进程吗?
我读了这个问题,但我不确定我的线程是否干扰了“Worker's main loop”: Danger to having long lasting (non-deamon) threads in a Django/Gunicorn app?
最佳答案
没有。从 Gunicorn 工作主线程生成的线程没有什么特别之处。
一旦你生成一个线程,它将并行执行直到完成或死亡。 Gunicorn 不知道这些从工作主线程派生的线程,所以它不会尝试加入它们,因此工作主线程不会等待子线程完成。此外,线程的守护进程没有任何影响;守护进程只是意味着线程不会对进程的“ liveness ”做出贡献,并且会一直运行到进程退出,届时它会被自动杀死。
如果你想在重新使用同一个工作线程之前等待这些线程完成,你必须在 WSGI 应用程序(例如 django.core.handlers.wsgi.WSGIHandler.__call__())返回之前这样做。或者为 Gunicorn 编写一些疯狂的猴子补丁来跟踪子线程。
TL;DR 您绝对可以通过从工作主线程生成长时间运行的子线程来无限制地增长线程。最好保证它们会在超时的时间内完成。
关于python - Gunicorn Django 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24005080/
我尝试了几乎所有命令来杀死 gunicorn 服务器。但没有任何效果。我怎样才能杀死这些进程并释放 80 端口 12652 ? Ss 0:00 sudo gunicorn -b
我正在使用 Apache Airflow,发现 gunicorn-error.log 的大小在 5 个月内增长了超过 50 GB。大多数日志消息都是 INFO 级别的日志,例如: [2018-05-1
我正在使用 在 Digital Ocean 上运行 django gunicorn 和 nginx . Gunicorn 用于为静态文件提供 django 和 nginx。 通过网站上传文件后,我无法
我正在使用 Django 1.8,我想用 gunicorn 运行我的应用程序。 我可以从命令行绑定(bind)到我的 IP 运行它: gunicorn myapp.wsgi:application -
我们正在使用 https://github.com/tiangolo/uvicorn-gunicorn-fastapi-docker FastAPI 并且能够使用 gunicorn 日志文件自定义我们
我在 docker 上的 centos7 上运行 Airflow 1.8,但我的网络服务器无法访问浏览器。我通过pip2.7安装了airflow。 Flower ui 显示良好,initdb 运行连接
gunicorn.service cannot open WorkingDirectory and the gunicorn executable. I think it's about per
任何想法为什么我的 gunicorn 服务器无法启动? jeffy@originaldjangster:~$ sudo /home/jeffy/django_files/django_test_ven
我已经安装了gunicorn,但是没有找到gunicorn命令: # pip3.4 install gunicorn Requirement already satisfied (use --upgr
我在有监督的ginicorn部署我的django项目。 我在virtualenv中安装了gunicorn,添加到INSTALL_APPS中。 命令./manage.py run_gunicorn -b
我成功安装了gunicorn: remote: -----> Removing .DS_Store files remote: -----> Python app detected remote: -
Systemd 和 Gunicorn 需要某种 wsgi 文件作为 ExecStart 的最后一个参数:http://docs.gunicorn.org/en/latest/deploy.html?h
我正在尝试将基本应用程序部署到 Amazon EC2使用 Django , Gunicorn , 和 Nginx .我有应用 git clone进入我的AWS Ubuntu实例并正在运行 Django
在更新为使用小型模型中的 spacy_en_core_web_lg 后,我的 fastapi 服务器内存不足。 当运行 fastapi 时,会生成 4 个 gunicorn worker,并且根据内存
我有一个基于这个的 ansible 配置虚拟机 https://github.com/jcalazan/ansible-django-stack但出于某种原因,尝试启动 Gunicorn 会出现以下错
我关注 this如何在 Ubuntu 18.04 指南中使用 Postgres、Nginx 和 Gunicorn 设置 Django。 我创建了以下文件 .socket sudo nano /etc/
我正在尝试按照此 [链接][1] 在 Digital Ocean 上部署简单的 Django 应用程序用 gunicorn 实现它的抛出错误 gunicorn.service: Failed with
这里我想问你,用python运行gunicorn uvicorn,和默认从tiangolo有什么区别? 我尝试使用 JMeter 对这些进行压力测试具有线程属性: 从这些,我得到了结果:: 从上面我尝
因此,我有一个简单的 Flask API 应用程序,它运行在运行 tornado worker 的 gunicorn 上。 gunicorn 命令行是: gunicorn -w 64 --backlo
我已经使用 Gunicorn + Nginx + Supervisor 部署了一个 Django 1.6 应用程序。一切正常,但我的 Gunicorn error.log 一直在发送错误。该文件很大,
我是一名优秀的程序员,十分优秀!