如何发一条可靠的CGI请求

关于在python中获取CGI之POST请求data块内容 如题,今天困扰了我一会儿的一个问题。 客户端在制作一个bug自动上报机制时,需要服务器给提供一个cgi自动把bug发生时的日志及截图等上传到服务器。   因为需要传递大量数据(日志文件或图片?),使用POST方法。 客户端把日志文件写在了这个HTTP请求的content 段中,从抓包结果来看,我需要把这个没有名字的内容获取并保存下来。   尝试几种方法: 1)使用cgi.FieldS 阅读详情

客户端业务搬砖狗的自我修养……

在日常开发中,和后台交互必不可少,比如Feeds流里的消息,需要更新、预加载等等,都需要找后台拉取信息。

那么,向后台发包,请求数据,并处理返回的数据。就是一次CGI请求。当然不同公司和团队,对此定义也不一样,不必纠结。

漫谈CGI请求的那些事

让一条CGI更加可靠,需要考虑的点很多。比如逻辑要放到合适的线程/进程中执行、并发访问兼容、多线程访问兼容、考虑监控耗时、考虑使用合适的存储、考虑用户操作、考虑请求限频、考虑节假日请求量激增问题,考虑在极端场景下,比如后台返回了错误的数据,对客户端的影响要降到最低。简言之,考虑的越周全越好。

作为业务狗,学会归纳与抽象化,对个人能力的提高极为重要,举个最简单的例子,工作一年,可能要写几十条CGI,但是,这些CGI的主流程基本都是一样的,只有归纳整理成通用流程以及方法论,才能轻松应对工作中各式各样的需求,才能切实提高自己的业务水平。

CGI请求常见考虑点

细化一下CGI流程中常见的考虑点。

1. 定义生命周期

一条CGI,或者是某个Action,总会有对应的生命周期。什么时候开始,什么时候结束,什么时候会被中断。想清楚这些,才能更好的管理请求。

2. 发起请求

  1. 首先确定要在哪个线程/进程发起,比如子线程发起的话,就可以做一些比较耗时的操作。

  2. 限定调用方线程/进程,或者要兼容调用方存在多线程调用的可能。

  3. 发请求一定要做好限频,比如两次请求之间,要间隔多少分钟,在请求发起时判断是否满足限频条件,在请求发出后更新最新请求时间。

  4. 通常,相同请求,要做好互斥,即上一条请求结束之前,不要发起新的请求。

  5. 每一条异常return分支,要打印log方便后续查问题。

  6. 发请求之前,根据业务场景增加判断当前网络的逻辑,比如无网络时不发起请求。

3. 请求回包。

  1. 确认当前线程/进程,这决定着后续逻辑能否操作UI,能否执行耗时操作。

  2. 检查对应的Request是不是自己发起的,只处理自己期望的回包。

  3. 检查Response是否正常,错误码、返回数据是否完整。

  4. 解析数据,注意空指针,注意后台异常数据,比如用户年龄,肯定不是负数。要做到和后台互不信任,互相检查,保证在后台返回了错误数据的情况下,客户端受到的影响尽量小。

  5. 有时候后台会返回下一次请求的间隔时间,记得更新到本地。

  6. 更新数据,要考虑耗时,灵活使用子线程。

  7. 写DB要处理更新失败的回退、考虑是否需要使用事务。

  8. 先更新DB,后更新UI,更新UI要切到主线程。

  9. 处理好各种失败的逻辑,比如请求失败、更新DB失败。

  10. 请求间隔、数据存储等等,要考虑影响范围,比如影响单个用户、所有用户等等。

  11. 考虑在读写DB时,用户也在同时操作UI的情况,比如某个要更新的数据,可能在本次CGI回来之前,用户已经删除了。

统一的原则

根据不同业务,不同场景,需要考虑的问题也有一定的差别,当然,规划与思考是最重要的。考虑的越全面,越不容易被祭天。

当然,从另一个角度上说,这也是属于归纳与抽象化思维的一点应用。

cgi web 调用多次启动_简单说明CGI和动态请求是什么 1. CGI是什么CGI是common gateway interface的缩写,大家都译作通用网关接口,但很不幸,我们无法见名知意。我们知道,web服务器所处理的内容都是静态的,要想处理动态内容,需要依赖于web应用程序,如php、jsp、python、perl等。但是web server如何将动态的请求传递给这些应用程序?它所依赖的就是cgi协议。没错,是协议,也就是webserve... 阅读详情

相关推荐

Python CGI 编程

Python CGI编程是一种强大的技术,可以帮助开发者实现丰富的Web应用程序。本文介绍了Python CGI编程的基础知识、环境搭建、脚本编写以及常见问题处理等内容。希望读者通过本文的学习,能够掌握Python CGI编程的技巧,并将其应用于实际项目中。

csbysj2020的博客 860

Web知识点---公共网关接口CGI的实现方法

介绍了通用网关接口CGI的特点,以及提供了四种编程语言的CGI程序代码

小人物的编程 1902

c代码cgi获取post,get请求数据

此段cgi代码可以获取get和post两种请求传递给服务器的数据

CGI 请求是什么意思?底层原理是什么?

在底层原理上,Web 服务器通常会为每个 CGI 请求创建一个新的进程或线程,然后将请求参数传递给 CGI 程序,并等待 CGI 程序的响应结果。CGI 请求是指客户端(如浏览器)向 Web 服务器发送一个 HTTP 请求,并将请求交由服务器上的 CGI 程序处理生成响应的过程。CGI 请求通常包含请求头、请求参数、请求体等多个部分,这些信息会被 Web 服务器读取并传递给 CGI 程序进行处理,最终 CGI 程序会生成响应并将响应内容返回给客户端。

长风破浪会有时的博客 821

VTK的编译和部署,配合c++和visual studio2022,VTK开发环境的配置

在官网选择最新的版本下载之后进行解压,然后再里面创建build目录,方便后面使用cmake进行编译。

dz131lsq的博客 3223

Obsidian和Typora图片路径同步终极指南:告别混乱的assets文件夹

本文详细解析了Obsidian与Typora图片路径同步的终极解决方案,通过Custom Attachment Location插件实现动态路径管理,解决了两款工具间图片兼容性问题。文章提供了从基础配置到高级应用的完整指南,帮助用户告别混乱的assets文件夹,提升工作效率。

g9h0i1的博客 822

【深大算法设计与分析】实验六 最大流应用问题(棒球赛问题) 实验报告 附代码、数据集

【内附代码与数据集】【深大算法设计与分析】实验六 最大流应用问题(棒球赛问题)

m0_74268508的博客 1293

CGI 编程基础

CGI 编程基础 一、简述 记--CGI编程基础,CGI编程简单例子。 例子1:常用参数 例子2:GET、POST请求参数获取、文件上传 例子3:原生AJAXGET、POST请求 例子4:JQueryAJAXGET、POST请求 例子打包:https://wwa.lanzous.com/iGkm...

Genven_Liang的博客 3753

【CubeMX】STM32G474 HRTIM 互补PWM与死区时间配置实战

本文详细介绍了如何使用STM32CubeMX配置STM32G474的高分辨率定时器HRTIM生成互补PWM波形并精确设置死区时间。通过实战步骤讲解时钟配置、死区计算与高级功能,帮助工程师在电机驱动和电源应用中实现精准控制,避免上下桥臂直通风险。

grpc6streamer的博客 727

瑞芯微RK3568与RK3566芯片选型指南:从接口差异到应用场景深度解析

在嵌入式系统与边缘计算领域,芯片选型是决定产品成败的关键一步。其核心在于理解芯片的架构、接口扩展能力与系统可靠性之间的平衡。以瑞芯微(Rockchip)的RK3568和RK3566为例,这两款同为四核A55架构的芯片,在基础算力上相近,但其面向的应用赛道却因接口配置而截然不同。RK3568凭借其双千兆网口、PCIe 3.0高速接口以及全链路ECC内存支持,在技术价值上更侧重于构建高可靠、高扩展性的系统,如边缘计算网关、工业控制器和网络视频录像机(NVR)。相比之下,RK3566则以其精简的接口配置,精准服务

weixin_33314040的博客 480

HTTP请求中的CGI请求与登录注册机制

CGI(通用网关接口)是早期Web服务器与外部程序通信的标准协议,通过环境变量和标准输入输出进行数据传输。其特点是每次请求启动新进程(性能较低)、无状态但通用性强。在登录/注册场景中,CGI通过解析GET/POST请求参数处理用户数据,示例代码展示了如何验证凭据、设置Cookie及实现URL解码。注册流程类似,需解析表单数据并存储用户信息。CGI虽然简单通用,但因性能问题已逐渐被更高效的技术取代。

weixin_42108533的博客 558

claude-hub:GitHub上的AI开发助手,让Claude自动帮你写代码、审代码、合代码

代码不再是人写的,而是人引导 AI 写的。在这个时代,GitHub 不再只是一个代码托管平台,而是 AI 开发代理的工作台。每一个 issue、每一条 PR,都可能是一次与 AI 合作的机会。未来属于那些敢于把开发流程交给 AI 来优化的人——他们不是在取代自己,而是在放大自己的影响力。📌关注本系列文章,我们将持续输出关于 AI 编程、GitHub 自动化、AI Agent 产品化的深度分析。

这里汇聚了前沿的技术分享与实用的开发技巧,带你探索从创意到企业的技术创业之路。 1373

CGI是什么

CGI 早期的Web服务器,只能响应浏览器发来的HTTP静态资源的请求,并将存储在服务器中的静态资源返回给浏览器。随着Web技术的发展,逐渐出现了动态技术,但是Web服务器并不能够直接运行动态脚本,为了解决Web服务器与外部应用程序(CGI程序)之间数据互通,于是出现了CGI(Common Gateway Interface)通用网关接口。简单理解,可以认为CGI是Web服务器和运行其上的应用程序进行“交流”的一种约定。 Web系统结构 CGI是Web服务器和一个独立的进程之间的协议,它会把HTT

嘿嘿 1万+

机器学习实战——疫情数据分析与预测

机器学习如何做到疫情可视化——疫情数据分析与预测实战 本文将带领大家爬取11个国家以及中国31个省(自治区、直辖市)在2022.0101-2022.06.19的新冠疫情数据。并且采用机器学习模型对2022.6.20-2022.6.30每一天的全国确诊人数、死亡人数、治愈人数进行预测,**做出疫情可视化图形并且求出最终的相关系数R2!...

拥有百余位万粉技术博主、200余位可合作代发博主,私域技术社群规模达千人,商务合作私信 10万+

C#上位机开发实战全流程:从需求到落地,避坑指南+完整代码

作为一名做了5年工业自动化上位机开发的程序员,我踩过的坑比写过的代码还多——从最初串口通信粘包导致数据错乱,到可视化图表卡顿卡死,再到现场异常崩溃无日志可查,每一次踩坑都是一次血泪教训。今天这篇文章,我会把C#上位机开发的全流程拆解开,从需求分析到通信模块、数据可视化,再到异常处理,每个环节都结合工业实际场景,分享真实项目中能用的方案、完整代码和避坑技巧。不管你是刚入门的新手,还是想优化现有项目的老司机,相信都能有所收获。很多新手做上位机开发,一上来就闷头写代码,最后发现做出来的东西不符合现场需求——比如客

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 996

AJAX异步请求和CGI开发

content-type:请求体数据类型,一般设置为 application/xx-www-form-urlencoded(form表单数据,数据格式,字段名=值&字段名=值....)编译时: 加 -lcjson 第一次编译之后, 需要执行 sudo ldconfig, 将/usr/local/lib路径加入到so库加载的环境中。下载cJSON源码:git clone https://gitee.com/du-yueqiang/cJSON.git。authentication:请求身份信息,一般是。

weixin_68995006的博客 1772

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

什么是 CGI 技术

尽管 CGI 的使用在现代 Web 开发中已经减少,但理解其工作原理和历史背景对于全面掌握 Web 技术的发展是非常有益的。通过上述 Perl 和 Python 的 CGI 程序示例,我们可以看到 CGI 的基本操作方式,以及如何在 Web 服务器上处理动态内容。当今,选择合适的技术方案不仅需要考虑实现的功能,还需要评估性能、安全性、可维护性和开发效率。CGI 作为一种早期的 Web 技术,虽然在某些场景中仍然有效,但在更多情况下,使用更现代化的技术栈将带来更好的开发体验和系统性能。总结来说,

孔乙己的博客 3381

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

35.Python从入门到精通—Python CGI编程 什么是CGI

CGI是一种通用网关接口,它是一种标准的协议,用于在Web服务器上运行外部程序(通常是脚本程序)。CGI程序可以在Web服务器上生成动态内容,例如网页表单的处理、数据库查询和图像生成。CGI程序可以用多种编程语言编写,例如Python、Perl、C++等。在Python中,CGI编程可以使用内置的CGI模块来实现。这个模块提供了一些函数,可以方便地处理CGI请求和响应。

weixin_50804299的博客 7677

Python CGI编程

CGI 目前由 NCSA 维护,NCSA 定义 CGI 如下:CGI(Common Gateway Interface),通用网关接口,它是一段程序,运行在服务器上如:HTTP 服务器,提供同客户端 HTML 页面的接口。

Aforxiaoxie 1745

什么是CGI程序

用自己话总结一下,就是放置在服务器上的一段可执行程序。作为HTTP服务器的时候,客户端可以通过GET或者POST请求来调用这可执行程序。 C语言在平台无关性表现很不错,所以C语言是CGI编程的首选语言。 以下转载自网络: Linux CGI编程基础 1.为什么使用CGI? 如前面所见,任何的HTML均是静态网页,它无法实现一些复杂的功能,而CGI可以为我们实现。如:a.列出服务器上某个目录中的文件...

1万+

异步请求与CGI开发:深入理解与实践

异步请求允许网页部分内容更新,而不需要刷新整个页面。在浏览器和服务器之间通过JavaScript进行数据交互,这种方式非常适合现代Web应用开发。CGI(Common Gateway Interface)是一个用于Web服务器与外部程序(如C语言编写的程序)之间通信的标准协议。通过CGI,Web服务器可以与后端应用进行交互,处理客户端请求,并返回动态生成的内容。通过本文,您学习了如何使用 JavaScript 发起异步请求、CGI 开发的工作原理、如何与数据库交互以及处理安全通信等相关技术。

weixin_65477256的博客 1436

web网页向cgi发送post请求并返回数据_C++ Web 编程

C++Web 编程什么是 CGI?公共网关接口(CGI),是一套标准,定义了信息是如何在 Web 服务器和客户端脚本之间进行交换的。CGI 规范目前是由 NCSA 维护的,NCSA 定义 CGI 如下:公共网关接口(CGI),是一种用于外部网关程序与信息服务器(如 HTTP 服务器)对接的接口标准。目前的版本是 CGI/1.1,CGI/1.2 版本正在推进中。Web 浏览为了更好地了解...

weixin_39951112的博客 905
上一篇: 如何高效的从上百万行log中查找有效信息?
下一篇: 海陵岛两日游
肖小的人儿
博客等级 码龄12年 29粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值