Celery: 将失败任务路由到 RabbitMQ 的死信队列
Celery 是一个分布式任务队列,Celery 任务有自动重试的功能,本文介绍了如何将达到最大重试次数后仍然失败的任务消息路由到 RabbitMQ 的死信队列。 一般一个项目配置一个死信队列的 Exchange 就可以了,然后再根据业务配置多个死信队列绑定到死信…
Python: 通过 .env 文件配置不同环境中的环境变量
之前写的 Flask: 根据当前环境加载不同配置文件 有些笨重,接下来介绍一种通过加载配置文件(.env)到环境变量,再从环境变量中读取配置的方法,这种方式更加灵活: 首先需要安装 python-dotenv 库:
Copy
pip install python-dotenv…
Flask: 根据当前环境加载不同配置文件
比如数据库连接信息在测试、正式环境通常对应两套不同的配置。 本文基于 Python 的 Flask 框架实现。
如果想使用 .env 文件来配置不同环境,参考:Python: 通过 .env 文件配置不同环境中的环境变量
首先需要创建一个基类…
RabbitMQ: 在 Windows 上安装
按顺序下载和安装: Erlang/OTP Version Tree
rabbitmq-server
按下 Windows 键,找到并打开 RabbitMQ Command Prompt:
再复制以下命令粘贴进去执行:
Copy
rabbitmq-plugins…
nginx: 504 Gateway Time-out
通过 nginx 反向代理后,上传文件时提示 "504 Gateway Time-out"。 因为我是通过 nginxconfig.io 生成的配置,所以我这里只需要修改默认的三个参数,不新增任何参数:
Copy
proxy_connect_timeout…
Logto: 如何在本地快速部署
本文记录了如何快速在本地部署 Logto open-source service (OSS) 。 当然,如果仅仅是想体验 Logto 的功能,可先通过官网 https://logto.io/ 快速了解,而后直接访问 https://cloud.logto.io 体验官方云版…
nginx: favicon.ico 404
nginx 不会将 favicon.ico 的请求转发给反向代理后面的网站程序,需要在 server 中设置 root 目录: Copy
server {
root /path/to/your/wwwroot; # 确保此路径指向包含 favicon.icon 的目录
}…
DateRangePicker: 实现周/星期选择器
期望:点击某一天,自动选中这一天所在星期的开始和结束日期。 现状:这是一个选择时间范围的需求,Date Range Picker 自身并没有实现周选择的功能,对于日期范围,需要点一次开始,再点一次结束。
所以需要自己实现,步骤如下。
Copy
.daterangepicker…
HTML <form>: 使用 JavaScript 自定义表单验证
在按照 Bootstrap - Forms - Validation 对 <form> 中的可输入控件进行数据校验时,可以在控件上添加 required、minlength、maxlength 等常规通用的原生验证属性。 当我们有更复杂的业务逻辑时,还可以通过…
SEO Google: 结构化数据介绍
写在前面:一开始不了解,以为编写结构化数据可以定义搜索结果中展示的二级菜单,学到后面发现做不到,因为它是由 Google Search 根据算法自动生成的,参考:搜索引擎 - 如何在搜索结果页展示二级目录?。 不过也了解到结构化数据的功能,比如定义搜索结果中的搜索框的交互行为。…
SEO: 使用 Lighthouse 分析网站需要改进的地方
Lighthouse 提供针对性能、无障碍功能、渐进式 Web 应用、SEO 等方面的审核。 您可以在 Chrome DevTools 中、通过命令行或作为 Node 模块运行 Lighthouse。为 Lighthouse 提供一个要审核的网址,它会对此页面运行一系列审核…
SEO Google: Search Console 使用入门
当然是阅读官方提供的文档啦:Search Console 使用入门 官方提供了太多文档,个人觉得其中需要花时间去了解的章节有:
5. 了解 Google 搜索的基础知识
6. 重要的 Google 搜索概念
7.2. 您的网站在 Google 上的表现如何?
7.5…
SEO Google: 添加到 Search Console(有效解决零收录情况)
如果发现搜索结果中一条记录都没有,那么在完成本文指引后,再等待 1 天,再去查询收录情况,就会发现提交的网站已经被收录了。 打开控制台:https://search.google.com/search-console/welcome?hl=zh-cn
根据提示输入域名,添加…
批量修改文件编码工具
工具地址:https://github.com/amrali-eg/EncodingChecker 使用方法:
参考:https://blog.csdn.net/weixin_42378319/article/details/118823760
ABP: UserMenu 新增菜单项
打开 Web 项目的 Menus\?MenuContributor,加入以下代码: Copy
public async Task ConfigureMenuAsync(MenuConfigurationContext context)
{
..…
净值型理财怎么算收益
日收益=持有份额*(最新净值-上一日交易日净值) 最终计算的收益值保留两位小数,我感觉应该是四舍五入,然后最低 0.01 元,也就是最小收益的货币单位是人民币分。
计算收益时,是根据购买的份额来计算,不会代入投入的金额。
收益发放规则:确认份额后开始计算收益…
Next.js: API 请求速率限制
限制一定时间内的 API 访问次数,比如一分钟内只允许访问 5 次 API。 注意:
通过在项目根目录创建 middleware.ts(或 .js) 文件来定义 Middleware。例如,与 pages 或 app 位于同一级别,或在 src 中(如果适用)。
一个项目只…
Next.js: 5 种退出静态渲染的方法
适用于项目在 build 之后,route.ts 的响应结果被静态处理,表现为:接口始终响应相同的数据。 我使用的方法是,在 route.ts 中添加以下代码:
Copy
export const dynamic = 'force-dynamic'
参考:
Next.js…