Django proxy_view代理后端

news2024/11/27 22:39:15

某些需求下,需要通过Django代理后端,比如开发celery定时任务时候,需要代理后端的flower,代理后端可以直接使用Django自带的授权,方便权限控制

具体操作如下

1.安装 django-proxy 包,进行代理

pip install django-proxy

2.编写view,用与代理后端flower

settings.py中添加下面配置

CELERY_FLOWER_PORT = 5566
CELERY_FLOWER_HOST = '127.0.0.1'
CELERY_FLOWER_AUTH = 'flower:flower123.'

 flower.py文件如下

import base64
import logging

from django.conf import settings
from django.http import HttpResponse
from django.utils.translation import gettext as _
from django.views.decorators.clickjacking import xframe_options_exempt
from proxy.views import proxy_view
from rest_framework.views import APIView

logger = logging.getLogger(__name__)

flower_url = f'{settings.CELERY_FLOWER_HOST}:{settings.CELERY_FLOWER_PORT}'


class CeleryFlowerView(APIView):

    @xframe_options_exempt
    def get(self, request, path):
        remote_url = 'http://{}/api/flower/{}'.format(flower_url, path)
        try:
            basic_auth = base64.b64encode(settings.CELERY_FLOWER_AUTH.encode('utf-8')).decode('utf-8')
            response = proxy_view(request, remote_url, {
                'headers': {
                    'Authorization': f"Basic {basic_auth}"
                }
            })
        except Exception as e:
            logger.warning(f"celery flower service unavailable. {e}")
            msg = _("<h3>服务不在线,请联系管理员</h3>")
            response = HttpResponse(msg)
        return response

    @xframe_options_exempt
    def post(self, request, path):
        return self.get(request, path)

添加url路由配置

from django.conf import settings
from django.contrib import admin
from django.urls import path, include, re_path
from django.views.static import serve

from common.celery.flower import CeleryFlowerView

urlpatterns = [
    path('admin/', admin.site.urls),
    re_path(r'api/flower/(?P<path>.*)', CeleryFlowerView.as_view(), name='flower-view'),
    # media路径配置 开发环境可以启动下面配置,正式环境需要让nginx读取资源,无需进行转发
    re_path('^media/(?P<path>.*)$', serve, {'document_root': settings.MEDIA_ROOT}),
]

 

可以看到上面代理使用了额外的认证配置,是因为flower2.0 中部分操作,需要认证才能操作

3.启动flower进程

celery -A server flower -logging=info --url_prefix=/api/flower  --basic-auth=flower:flower123.  --address=127.0.0.1 --port=5566

4.访问

 可以看到,cookie信息已经传递到后台,然后基于token进行认证

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/724029.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LVS负载均衡集群(DR)

目录 1.数据包流向 2.通信遇到的问题 1.ARP广播 导致所有节点服务器和调度器的VIP响应 2.VIP的调度器失效 3.案例 1. 配置负载调度器 2.部署共享存储 3. 配置节点服务器(这里是两台) 1.数据包流向 1.客户端发送请求到负载均衡器 请求的数据报文到达内核空间 2.负载均…

改进 Elastic Stack 中的信息检索:引入 Elastic Learned Sparse Encoder,我们的新检索模型

作者&#xff1a;Thomas Veasey&#xff0c;Quentin Herreros 在本博客中&#xff0c;我们讨论了我们一直在使用预先训练的语言模型增强 Elastic 开箱即用检索功能所做的工作。 在本系列的上一篇博客文章中&#xff0c;我们讨论了在零样本设置中应用密集模型进行检索的一些挑战…

全网最细,接口自动化测试hook机制使用详细,进阶高级...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 requests 库只支持…

Sa-Token,一款更加轻量的权限认证框架

今天给大家介绍一个轻量级 Java 权限认证框架&#xff0c;我们之前一直采用最多的鉴权框架是OAuth2.0或者SpringSecurity&#xff0c;但是两者的配置都相当复杂&#xff0c;学习成本也非常高&#xff0c;所以我一直在试图寻找更好的解决办法&#xff0c;这几天在搭建权限体系平…

密码学学习笔记(五):Hash Functions - 哈希函数1

简介 什么是密码学中的哈希函数&#xff1f; 哈希函数是一种快速算法&#xff0c;它接受任何长度的输入&#xff0c;并产生一个固定长度的随机输出&#xff0c;称为摘要(digest)&#xff0c;比如&#xff1a; MD4, MD5: 128-bit output (broken) •SHA-1: 160-bit output (b…

Infinite Zoom 丝滑循环小视频生成方法

使用Infinite Zoom插件在Stable Diffusion中可以制作无限缩放效果视频的过程。 文章目录 插件安装插件功能Main选项卡Video选项卡OutpaintPost process 插件使用 插件安装 在Stable-Diffusion-webui安装Infinite Zoom插件。启动Stable-Diffusion-webui&#xff0c;选择扩展-从…

使用css的:before属性在文字前加短竖线

有时候我们需要在文字或者标题前加个短竖线&#xff0c;有的人会使用 border 来模拟一个竖线&#xff0c;其实大可不必&#xff0c;我们可以利用元素的 :before 属性来实现&#xff0c;效果如下&#xff1a; 具体的代码如下&#xff0c; HTML&#xff1a; <span class&quo…

【计算机网络】第 1 课 - 数据的三种交换方式

欢迎来到博主 Apeiron 的博客&#xff0c;祝您旅程愉快 &#xff01; 时止则止&#xff0c;时行则行。动静不失其时&#xff0c;其道光明。 目录 1、缘起 2、电路交换 3、分组交换 4、三种交换方式的对比 4.1、电路交换优点 4.2、电路交换缺点 4.3、报文交换优点 4.4、…

【抽象拓扑排序】ABC216 D

D - Pair of Balls (atcoder.jp) 题意&#xff1a; 有2*n个球&#xff0c;每个球涂n种颜色&#xff0c;每种颜色恰好涂两个球&#xff0c;把这些球放进m个栈里&#xff0c;每次操作可以弹出两个相同颜色的球&#xff0c;问是否存在方案使得将所有栈清空 思路&#xff1a; 注…

Day44——动态规划part6

完全背包 private static void testCompletePack(){int[] weight {1, 3, 4};int[] value {15, 20, 30};int bagWeight 4;int[] dp new int[bagWeight 1];for (int i 0; i < weight.length; i){ // 遍历物品for (int j weight[i]; j < bagWeight; j){ // 遍历背包…

2023.07.06 homework

1&#xff09;止水夹打开&#xff0c;连通器相通 2&#xff09;左侧水位高11cm 的水位下降 y cm 3&#xff09;右侧水位低 4cm 的水位上涨 x cm 4&#xff09;最终两边水位相等保持一个平面上 11cm - y 4cm x 5&#xff09;左侧的水下降的体积跑哪里去了&#xff0c;填到…

flask和Vue3的前后端数据传输

&#xff08;一&#xff09;基于flask&#xff0c;构建一个后端 后端就采用flask的一般构建方法&#xff0c;然后用 flask-restful 构建一个接口&#xff0c;接口返回为json数据。 datas [{id: 1, name: xag, 年龄: 18}, {id: 2, name: xingag, age: 19}]class UserView(Res…

基于单片机的智能太阳能手机充电器的设计与实现

功能介绍 以STM32/51单片机作为主控系统&#xff1b;LCD1602液晶显示当前电压值&#xff1b;太阳能电池板采集当前光照转换为电能&#xff0c;然后TP4056锂电池充放电模块给锂电池进行充电&#xff0c;充完后自动断电&#xff0c;防过充&#xff1b;通过CE8301模块对锂电池电压…

3D空间的旋转的各种等价形式

旋转矩阵 欧拉轴和角度&#xff08;旋转矢量&#xff09; 欧拉旋转 四元数

如何部署LVS + keepalived 负载均衡高可用集群

目录 一、LVS架构 概念 L4和L7负载均衡的区别 keepalive故障自动切换 抢占与非抢占 二、keepalived管理LVS负载均衡器 LVS集中节点的健康检查 三、部署LVS keeplived 高可用集群 第一步 关闭防火墙和安全机制 第二步 安装工具 第三步 手动配置模块 第四步 编辑策略…

解决OpenJDK 64-Bit Server VM warning

解决OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended 问题解决关闭Xshare关闭提示&#xff08;如果你使用的是IDEA的话&#xff09; 问题 在写spring boot项目调试的时候&#xff0c;发…

超級SEO助手,如何批量发布文章?

超級SEO助手,如何批量发布文章&#xff1f; 目前超级SEO助手产品已经正式上线&#xff0c;但是还是有很多同学不会自动化发布文章&#xff0c;所以今天我就详细讲解下整个流程。 在发布文章之前首先确认你已经接入了对应的接口渠道&#xff0c;比如Wordpress、DeDeCMS、Z-Blog、…

FlinkCDC第三部分-同步mysql到mysql,ctrl就完事~

本文介绍了不同源单表-单表同步&#xff0c;不同源多表-单表同步。 Flink版本&#xff1a;1.16 环境&#xff1a;Linux CentOS 7.0、jdk1.8 基础文件&#xff1a;flink-1.16.2-bin-scala_2.12.tgz、flink-connector-jdbc-3.0.0-1.16.jar、flink-sql-connector-mysql-cdc-2.3…

手机也能做3D建模人物,你知道吗?

3D建模人物是当今设计界越来越流行的一个领域。3D建模人物可以指的是使用3D技术来建立和表现各种类型的人物模型。无论是在游戏设计、电影特效还是虚拟现实等领域&#xff0c;3D建模人物都扮演着重要的角色。 与传统的手工绘图相比&#xff0c;现代设计师可以使用各种3D建模软…

全网最细,Fiddler抓包实战教程-辅助接口测试(三)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 AutoResponder 请…