GS Guant,高盛出品的 Python 量化工具

安装和配置gunicorn 并且,一个请求一个进程,并发时,显然很占CPU和内存。当请求处理时间较长时,会阻塞其他请求的处理,不适合高并发或耗时较长的请求。gevent是基于协程的并发库,可以处理更多的并发连接。异步worker,能同时处理不止一个请求,就不会出现上面同步worker那样,一个请求就把后续请求都block阻塞住的情况了。参考:https://www.cnblogs.com/shengulong/p/7202294.html。好处是,即使一个worker进程crash了,也只会影响一个请求。配置文件要是.py结尾的。 阅读详情

你好,我是坚持分享干货的 EarlGrey,翻译出版过《Python编程无师自通》、《Python并行计算手册》等技术书籍。

如果我的分享对你有帮助,请关注我,一起向上进击。

GS Quant是一个用于量化金融的 Python 工具包,创建于世界上最强大的风险转移平台之一之上。旨在加速量化交易策略和风险管理解决方案的开发,拥有超过 25 年的全球市场经验。

它由高盛的量化开发人员(Quant)创建和维护,用于开发交易策略和分析衍生产品。GS Quant 可用于促进衍生品构建、交易和风险管理,或作为数据分析应用程序的一组统计包。

主要特征:

  • 由我们的宽客创建,为我们的宽客创建。我们的分析工具每天都受到高盛一千多名量化开发人员的信赖,用于管理我们的全球交易业务。

  • 我们的业务涵盖所有资产类别。我们的金融工具包从头开始设计,旨在成为适用于所有市场的完整解决方案,并通过直观的界面提供。

  • 利用经过全球衍生品市场中心数十年经验测试和完善的模型和数据集。

要求:

  • Python 3.6 及以上版本。(对 python 3.6 的支持将在不久的将来的某个时候结束)

  • 访问PIP包管理器

您可以使用以下命令验证您的 Python 版本python --version.
任何支持 Python 的 IDE 都可以使用。然而,我们团队的大多数人都使用 PyCharm。

以下是一个简单的示例,它生成随机时间序列并计算 1 个月(22 天)滚动已实现波动率:

import gs_quant.timeseries as ts
from gs_quant.timeseries import Window

x = ts.generate_series(1000)           # 生成包含 1000 个观测值的随机时间序列
vol = ts.volatility(x, Window(22, 0))  # 使用 22 窗口和 0 上升值计算已实现波动率
vol.tail()                             # Show last few values

输出:

Out[1]:
2021-12-20 12.898025
2021-12-21 12.927230
2021-12-22 12.929520
2021-12-23 13.987033
2021-12-24 14.048165
dtype: float64

恭喜!您已启动并运行 gs-quant。

- EOF -

文章已经看到这了,别忘了在右下角点个“赞”和“在看”鼓励哦~

推荐阅读  点击标题可跳转

1、Python 项目工程化最佳实践

2、Python 可以比 C 还要快!

3、streamlit,一个超强的 Python 库

4、豆瓣8.9分的C++经典之作,免费送!

5、Python 3.12 版本有什么变化?

最近我开了一家淘宝店,名字叫【打破壁垒】,主打程序开发相关付费素材、工具的共享类商品,帮助大家降低试错和使用成本。欢迎大家关注。

a4f6269788389ac53a19dc3370d09c78.jpeg

长按扫描下方二维码,然后点击页面中的【打开淘宝】,即可进入店铺:

fa85ea2beb7c0ef6a44d62fbe94416f5.png

回复下方「关键词」,获取优质资源

回复关键词「 pybook03」,领取进击的Grey与小伙伴一起翻译的《Think Python 2e》电子版

回复关键词「书单02」,领取进击的Grey整理的 10 本 Python 入门书的电子版

👇关注我的公众号👇

告诉你更多细节干货

693d154aefc373167663637339269cba.jpeg

欢迎围观我的朋友圈

👆每天更新所想所悟

OCTF2016--piapiapia 知识点: php反序列化长度变化尾部字符串逃逸 目录扫描发现www.zip,下载得到源码 源码有index.php,输入账号密码后会进入profile.php,还有register.php、updata.php、class.php和config.php flag值在config.php中,想办法访问到其内容 通过seay代码审计找到一点线索 看到profile.php中存在任意文件读取漏洞,前面还有反序列化 现在我们有个大体思路了,update.php中有一个$prof.. 阅读详情

相关推荐

gm/Id 设计方法

本文介绍gm/Id方法的具体实现。

maxwell2ic的博客 4万+

清华北大图书馆借阅最多的 40 本书

你好,我是坚持分享干货的 EarlGrey,翻译出版过《Python编程无师自通》、《Python并行计算手册》等技术书籍。如果我的分享对你有帮助,请关注我,一起向上进击。清华大学和北京大学图书馆借阅次数最多的40本书籍!读书是一种最低廉的成本,却能让我们获得最高级的成长策略。我们无法用脚步丈量的地方,文字却可以带领我们前行;我们无法用眼睛看到的地方,文字却可以带我们探索未知。—- EOF -文章...

codingpy的博客 318

钣金设计高薪进阶:从材料工艺到DFMA降本增效全解析

钣金设计是机械制造领域的核心技术之一,它涉及将金属板材通过切割、折弯、焊接等工艺成型为所需零件。其核心原理在于深刻理解材料特性、制造工艺约束与结构力学,以确保设计在功能、成本与可制造性之间取得最佳平衡。这项技术的价值在于,优秀的钣金设计能直接驱动产品降本增效,通过优化材料利用率、简化装配工序和避免设计缺陷,为企业节省大量模具与生产成本。其应用场景广泛,从机箱机柜、汽车部件到电子设备外壳无处不在。本文将聚焦于实现这一价值的关键路径,深入探讨面向制造与装配的设计(DFMA)原则在钣金领域的实战应用,并剖析如何通

weixin_34301132的博客 390

探索Granian:Python应用的高效Rust HTTP服务器

在Python世界中,寻找一个强大、稳定且性能优异的HTTP服务器是开发者的常见任务。现在,我们很高兴向您引荐[Granian](https://github.com/emmett-framework/granian),这是一个专为Python应用程序设计的Rust HTTP服务器。它旨在提供统一的HTTP实现,并以其高效的性能和简洁的部署方式脱颖而出。 ## 项目介绍 Granian是一个采

gitblog_00096的博客 854

信号完整性之阻抗(五)

一、什么是阻抗 阻抗的概念是从高中或者初中大家可能就会接触到,没想它一直陪伴我十年了。在我的印象中,提到阻抗我可能就会想到电阻,这样的思想局限也限制了我平常思考问题。所以今天也想把阻抗这个概念在顺理一遍,有错误或者欠缺的地方希望大家指正。 1.什么是阻抗: ==在具有电阻、电感和电容的电路里,对电路中的电流所起的阻碍作用叫做阻抗。阻抗常用Z表示,是一个复数,实部称为电阻,虚部称为电抗,其中电容在电路中对交流电所起的阻碍作用称为容抗 ,电感在电路中对交流电所起的阻碍作用称为感抗,电容和电感在电路中对交流电引

刘小同学的博客 2587

常学常新:《Attention Is All You Need》万字解读!

常学常新:《Attention Is All You Need》万字解读!

hunteritself的博客 3639

Granian:为Python应用打造的Rust HTTP服务器

在现代Web开发中,选择一个高效、稳定的HTTP服务器对于提升应用性能至关重要。Granian,一个由Rust编写的HTTP服务器,专为Python应用设计,以其卓越的性能和灵活的配置选项,正成为开发者的新宠。 ## 项目介绍 Granian是一个用Rust编写的HTTP服务器,旨在为Python应用提供高性能的HTTP服务。它支持HTTP/1、HTTP/2协议,并且未来还将支持HTTP/3。...

gitblog_00311的博客 581

EEG | CHB-MIT癫痫数据集CNN分类实战(一)

CHB-MIT癫痫数据集CNN分类实战

Always learn from the best. 1万+

Granian实战案例:用Granian构建高并发API服务的完整过程

在当今高并发场景下,Python应用需要更高效的HTTP服务器来应对海量请求。Granian作为基于Rust构建的Python HTTP服务器,通过其强大的异步处理能力和优化的线程模型,为Python应用带来了显著的性能提升。本文将详细展示如何使用Granian构建一个高并发API服务的完整过程。 ## 🚀 为什么选择Granian? Granian是基于Hyper和Tokio构建的Rust

gitblog_00115的博客 769

【乐企】开票控制服务

例子:企业信息初始化。

九七的博客 451

RK3588网卡出现丢包或者带宽不足的问题验证排查

注意除了有最大的TCP数据接收缓冲,还有/proc/sys/net/core/wmem_max — 最大的TCP数据发送缓冲可以调整,这里暂时没用到,针对具体需要可适当调整。比如把ethx接口中断从默认的cpu0迁移到其它cpu,例如将eth0中断234移到cpu7 (10是16进制, cpu0 =3588的cpu有8个核,4个A55(小核)+4个A76(大核),可以找到对应中断 将中断从默认cpu0核切到cpu7。tcp_rmem:单位是字节,接收缓存区大小,缓存从对端接收的数据,后续会被应用程序读取。

Android/Linux驱动开发传帮带学习,让驱动入门门槛更低! 2026

Granian 开源项目常见问题解决方案

**项目介绍:** Granian 是一个基于 Rust 语言开发的 HTTP 服务器,旨在为 Python 应用程序提供支持。它构建在 Hyper 库之上,支持 ASGI/3、RSGI 和 WSGI 接口应用程序,实现 HTTP/1 和 HTTP/2 协议,并支持 HTTPS 和 WebSockets。Granian 的设计目的是提供一个单一的正确 HTTP 实现,支持多种协议版本,同时在多种平...

gitblog_00217的博客 614

基于计算机视觉的无人便利店技术:从算法到部署的系统化实战指南

摘要:本文系统介绍了基于计算机视觉的无人便利店技术方案,提出"商品检测-跟踪-动作识别-防损-结算"五段式流水线架构。详细阐述了YOLOv8-Seg商品检测、OC-Sort多目标跟踪、3D-CNN+ST-GCN动作识别等核心算法实现,并完成NVIDIA Jetson Xavier NX边缘端的优化部署。通过TensorRT量化、DeepStream加速等技术手段,系统在保持94.7%动作识别准确率的同时,将漏单率降至0.8%,单店云端算力成本较行业平均降低84%。所有代码已开源,可直接应

博客 624

windows下django项目部署nginx+waitress

windows下部署uwsgi不可行,使用waitress进行替代

qq_43276836的博客 2934

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Granian生产环境部署:从开发到上线的完整流程

Granian是一款基于Rust构建的高性能HTTP服务器,专门用于运行Python应用程序。在生产环境中部署Granian能够为您的Python应用提供卓越的并发处理能力和稳定的性能表现。本文将详细介绍从开发到上线的完整部署流程,帮助您轻松完成生产环境配置。🚀 ## 为什么选择Granian? Granian采用现代化的架构设计,支持ASGI、RSGI和WSGI接口,具备HTTP/1和HT

gitblog_01104的博客 437

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Granian与主流Python框架集成:FastAPI、Django、Flask实战

Granian作为基于Rust构建的高性能Python HTTP服务器,正在成为现代Python Web应用部署的新选择。本文将深入探讨如何将Granian与三大主流Python框架FastAPI、Django和Flask进行无缝集成,展示其在实际项目中的应用价值。 ## 🚀 为什么选择Granian? Granian采用Rust语言编写,为Python应用提供了前所未有的性能提升。相比传统

gitblog_00860的博客 874

Granian 开源项目教程

Granian 是一个用 Rust 编写的 HTTP 服务器,专为 Python 应用程序设计。它旨在提供高性能和低延迟的服务,支持 ASGI 和 RSGI 接口,适用于各种 Python web 框架。 ## 项目快速启动 ### 安装 首先,确保你已经安装了 Rust 和 Python。然后,通过以下命令克隆项目并安装依赖: ```bash git clone https://gith...

gitblog_00292的博客 705

Granian社区与生态:了解项目发展现状和未来路线图

Granian作为一款基于Rust构建的Python HTTP服务器,正在迅速发展壮大。这个高性能服务器项目不仅得到了广泛的应用,还吸引了活跃的开发者社区参与贡献。🚀 ## 项目发展历程与现状 Granian项目始于对Python Web服务器生态的重新思考。传统的Python服务器解决方案往往依赖复杂的依赖组合,而Granian旨在提供一个统一、高效的现代HTTP实现。该项目目前支持ASG

gitblog_01111的博客 915

Granian项目中的RSGI规范详解:Rust与Python的高效通信接口

在现代Web开发中,高性能的网络通信框架至关重要。Granian项目提出的RSGI(Rust Server Gateway Interface)规范,为Rust编写的网络协议服务器与Python应用程序之间建立了一个标准化的高效通信接口。本文将深入解析RSGI规范的核心概念、设计原理和具体实现。 ## RSGI规范概述 ### 设计背景 传统ASGI规范虽然为Python异步Web应用提供了...

gitblog_00420的博客 716

Granian 开源项目使用教程

Granian 项目的目录结构如下: ``` granian/ ├── Cargo.toml ├── src/ │ ├── main.rs │ ├── config.rs │ ├── server.rs │ └── ... ├── examples/ │ ├── simple_app.rs │ └── ... ├── README.md └── ... ``` ### ...

gitblog_00855的博客 439

Granian:把 Python ASGI/WSGI 打包成“一键可执行”服务器

Granian是一款基于Rust开发的ASGI/WSGI服务器,专为Python Web应用设计,旨在简化部署流程并提升性能。它通过预编译二进制文件实现极简部署(仅需几MB)、毫秒级冷启动(10-30ms)和原生支持TLS/HTTP/2。相比传统Uvicorn+Gunicorn方案,Granian在容器镜像体积(可小至30MB)、启动速度(<0.03s)和功能集成(内置Prometheus监控)等方面具有显著优势。文章从安装到实战部署全面介绍Granian,包括FastAPI集成、核心概念解析、性能对

love_521_的博客 667

VS Code配置使用 Python,超详细配置指南,看这一篇就够了

VS Code配置使用 Python,超详细配置指南,看这一篇就够了

Python单行客的博客 32万+

Granian性能监控与调优:发现并解决瓶颈的7个方法

Granian作为一款基于Rust构建的高性能Python HTTP服务器,在提供卓越性能的同时,也需要专业的监控和调优策略来确保系统稳定运行。本文将为您揭示7个实用的性能监控与调优方法,帮助您发现并解决系统瓶颈。 ## 1. 系统资源监控与内存泄漏检测 [![Granian内存泄漏检测](https://raw.gitcode.com/gh_mirrors/gr/granian/raw/18

gitblog_00647的博客 1058

Granian WebSocket完全教程:构建实时应用的10个技巧

Granian是一个基于Rust构建的高性能HTTP服务器,专门为Python应用程序提供极致的WebSocket支持。作为现代实时应用开发的终极解决方案,Granian通过其异步架构和内存安全特性,为开发者提供了构建高效、稳定WebSocket应用的完整工具集。 ## 🔥 为什么选择Granian WebSocket? Granian WebSocket模块采用Rust语言编写,充分利用了

gitblog_01141的博客 734

Granian日志系统详解:如何配置访问日志和运行时日志

Granian是一个用Rust编写的高性能Python应用HTTP服务器,其内置的**Granian日志系统**提供了强大的访问日志和运行时日志功能,帮助开发者轻松监控应用运行状态和请求流量。🚀 ## 为什么需要专业的日志系统? 在Web应用开发中,日志是排查问题、监控性能、分析用户行为的重要工具。Granian的日志系统设计考虑到了生产环境的实际需求: - **运行时日志**:记录服务器

gitblog_00661的博客 558
上一篇: 面试官:localhost 和 127.0.0.1 的区别是什么?
下一篇: Python 代码文件不只是“.py”
codingpy
博客等级 码龄11年 1866粉丝 104原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值