前言 Flask 是 Python 开发的轻量 Web 框架,有多轻量呢?10 行以内就可以开发一个 Web 服务,不过这只能用来做演示,今天我就用 1 个小时来开发一个用于生产环境的短信微服务。...因为微服务环境下我们要减少代码的重复量,如果有多个微服务需要使用短信服务,那就要复制多遍代码,把公有云的 API 包装成我们自己的微服务 API 可以将代码的复制减少为一行 Http 请求。...调用 API 的 accesskey 和 secret 不需要复制给多个服务,减少安全风险。 可以根据我们的业务需求加入共用的业务逻辑。 多了一层调用有没有性能影响?...app/api/sms.py import logging from flask_restful import Resource, reqparse from app.sms import get_sms...Health from app.api.sms import Sms api_bp = Blueprint('api', __name__, url_prefix='/api') api = Api
---- 解决方案的形态是什么样的 在微服务的大潮下,如果想要复用短信验证的能力,最先想到的是开发一个短信验证服务,开放API给Consumer验证手机号码或是短信登录,名字我都想好了,叫sms-otp...(sms-otp 服务) 如果我是甲方IT部门,可能就这么做了,找到一个软件集成商实现sms-otp就行了。...那有没有更灵活的方案,既可以在单体应用中开箱即用,又可以按需扩展为独立服务呢?...我们针对短信验证推出了自定义的 Spring Boot Starter,大名。 通过starter,既可以将解决方案"嵌入"单体应用,也可以快速启动新的微服务。...可以使用该Starter快速搭建一个微服务。。。 有没有前端的开箱即用方案 ?
"""为用户添加新通知""" # 延缓 import 语句执行 from .marketing import send_sms 改动一行代码后,大功告成。...比如,你有没有想过 send_sms 函数,是不是已经不适合放在 marketing 模块里了?” 被小 C 这么一问,聪明的小 R 马上意识到了问题所在。...在新代码中,他创建了一个专门负责通知与消息类的工具模块 msg_utils,然后把 send_sms 函数挪到了里面。...from .msg_utils import send_sms 新的模块依赖关系如下图所示: ? 在新的模块结构中,整个项目被整齐的分为三层,模块间的依赖关系也变得只有单向流动。...,要选“麻烦但正确”的那个 整个项目内的模块间依赖关系流向,应该是单向的,不能有环形依赖存在 看完文章的你,有没有什么想吐槽的?
Huginn ,主要用来价格监控和 RSS 订阅 有没有一种爬虫服务,只需要我指定网站和规则,就可以定时爬数据,并且可以提供我指定格式的 json api 的,本人比较喜欢看自然科学相关的文章,经常看环球科学的网站...所以写了这个工具.有一点要说明一下, 由于 Github API 抓取次数的限制( 一般是 5000 ), 所以在一个小时内生成的 RSS , 将不会从 Github 抓取, 而是直接从数据库中取出副本...自建推荐 huginn 有没有可以满足条件后通过 iPhone 通知我(sms、app 皆可) ,是这样的,目前要写一个监控程序,然后需要循环监控某网页(目前用的 python 本地跑。...有没有这种 APP 的。。。或者现成的可用的 sms 发短信也行。。。。...有没有这个的平台,我输几个关键字,它把我关注的信息抓来过滤一下(正规可靠的信息渠道),我偶尔瞅一眼,这样,不至于在减少信息焦虑的同时,漏了我想知道的信息。如果没有,我们能不能做一个?
高度可扩展的工具调用:内置插件系统,允许AI助手在对话中执行特定操作,如结束通话、创建新工单、转接人工坐席等,并可轻松扩展自定义工具。...启动服务uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload使用说明发起一个由AI代理拨打的电话通过API端点 /call 发起一个POST请求...核心API概览POST /call: 发起一个新的由AI代理拨打的电话。...WebSocket /ws: 用于与实时音频流进行双向通信,实现低延迟的语音交互。POST /sms: 用于接收SMS消息的回调端点。核心代码1....执行工具调用 await tools_plugin.execute_tool_call(delta.tool_calls[0]) # 将助手的最新回复添加到消息历史
异步线程发送短信 假设由于某些原因,你现在需要做一些监控,比如监控的内容是,你的sms数据表里还有没有state=0(未发送)的短信,方便判断一下堆积的未发送短信大概在什么样的一个量级。...select count(*) from sms where state = ; 然后再把获得数据作为打点发给监控服务。...比如同样是读全表数据 select count(*) from sms;语句。 使用 myisam引擎的数据表里有个记录当前表里有几行数据的字段,直接读这个字段返回就好了,因此速度快得飞起。...知道真相的我眼泪掉下来。 那有没有其他更好的办法?...如果要求行数准确,可以建个新表,里面专门放表行数的信息。 如果对实时性要求比较高的话,可以将更新行数的sql放入到对应事务里,这样既能满足事务隔离性,还能快速读取到行数信息。
用户现在可以选择填充或线条样式显示选项卡,并且可以将工具栏颜色设置为选项卡的背景色。此外,还新增了灰色主题,为用户提供了更多的视觉选择。...从第三方来源插入文本:将新内容添加到文档中,通过从本地、URL或存储文件插入文本。路径:插入选项卡 -> 来自文件的文本。...RTL从右至左显示 & 新的本地化选项 ONLYOFFICE文档8.2版本在电子表格编辑器中添加了RTL(从右至左)支持,并正确对齐了工作表上的单元格。...五、如何确保团队成员在使用新功能时数据安全 灵活的访问权限管理:ONLYOFFICE协作空间允许设置不同级别的访问权限,包括仅查看、可评论、审阅者、可填写表单、编辑者、高级用户和房间管理员等,以保护特定文档免受不必要的访问和内部人员操作...身份验证和门户访问控制:通过移动短信动态密码提高门户登录的安全性,整合了Clickatell、SMSC和Twilio服务,提供适合不同团队规模和预算水平的SMS服务。
前言对于如何让技术人员写好开发文档,这是一个很常见的问题。本次不过多分享理论,而是通过分享我们团队新成员编写的第一份真正的开发文档,作为成例,给大家参考和借鉴。...内容包含:开发分支、单元测试、SQL数据库变更、核心流程的时序图、新增的API接口、单元测试覆盖率报告、新增的配置文件等。使用的研发协同工具YesDev,一款更友好的研发协同工具。...开发文档成例分享需求背景用户需要一个可以管理自己客户及客户联系人的功能,并且在需求需要反馈时,可以选择发短信或者邮件进行通知仓库地址https://codeup.aliyun.com/xxxxxxx/yesinew...后端开发分支mxh_test实现思路用户需要可以配置短信和邮箱服务的后台录入功能用户需要进行客户名单的管理,包括但不限于客户分组、客户管理、客户联系人等功能,并且对以上的功能可添加、编辑、删除以及查看前端需增加反馈功能模块.../Notes.php | 11 +-src/platform/Api/Sms/Sms.php | 184 +数据库变更
业务功能:分析子业务(子功能),每个子业务设计一个API接口 API设计过程: - 接口的请求方式,如GET 、POST 、PUT等 - 接口的URL路径定义 - 需要前端传递的数据及数据格式(如路径参数...2.1.1获取短信验证码 API: GET /sms_codes// # /sms_codes/?...2.1.2 异步发短信 为什么使用:传统的方式造成用户长时间的等待 解决: 1.将发送短信的代码抽取成一个函数 2.在短信发送API接口中创建一个进程调用发送短信函数。...# main.py from celery import Celery # 创建Celery类的对象 celery_app = Celery('demo') # 加载配置 celery_app.config_from_object...注意:如果想通过一个域名访问到Django网站服务器,需要将域名添加到 ALLOWED_HOSTS中。
业务功能:分析子业务(子功能),每个子业务设计一个API接口 API设计过程: - 接口的请求方式,如GET 、POST 、PUT等 - 接口的URL路径定义 - 需要前端传递的数据及数据格式(如路径参数...2.1.1获取短信验证码 API: GET /sms_codes// # /sms_codes/?...2.1.2 异步发短信 问题:造成用户长时间的等待 解决: 1.将发送短信的代码抽取成一个函数 2.在短信发送API接口中创建一个进程调用发送短信函数。...# main.py from celery import Celery # 创建Celery类的对象 celery_app = Celery('demo') # 加载配置 celery_app.config_from_object...注意:如果想通过一个域名访问到Django网站服务器,需要将域名添加到 ALLOWED_HOSTS中。
背景介绍 图1-1 部分客户公司有公网访问白名单限制,而腾讯云短信服务所使用云API3.0接口后端IP无法固定,因此需要经过代理,开发者服务器需要通过代理服务器将请求发送给腾讯云短信API接口,腾讯云短信服务也能通过...http代理将返回包发送给开发者服务器。...from tencentcloud.sms.v20210111 import sms_client, models # 导入可选配置类 from tencentcloud.common.profile.client_profile...1400006666 req.SmsSdkAppId = "1400787878" # 短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名,签名信息可登录 [短信控制台] 查看...结论 如遇到内网请求云短信API接口不通的情况,使用HTTP代理是可以满足访问需求。这里需要注意的是,增加代理可能会增加一定的延迟并存在单点故障可能,所以用户需要小心使用代理并实时监控代理的健康状况。
__init__(url_map) # 将正则表达式的参数保存在对象的属性中,flask会去使用这个属性来进行路由的正则匹配 self.regex = regex #...将自定义的转换器添加到flask的应用中 app.url_map.converters["re"] = RegexConverte @app.route("/send/<re(r'1[345678]\...: # 启动flask程序 app.run(debug=True) 大家可能看着一个例子会有点懵,这里我再写一个比较具体的例子给大家,这次的例子还是提取电话号码 : # -*- coding...将自定义的转换器添加到flask的应用中 app.url_map.converters["mobile"] = MobileConverte @app.route("的,而这个例子只能实现提取电话号码这一个功能。
实验表明,强制FIDO2多因素认证可阻断98%以上的凭证窃取尝试,而基于角色的定向安全意识培训显著降低点击率。本研究为高监管压力下的关键业务系统防护提供了可复用的技术范式。...实施示例(使用WebAuthn API):// 注册阶段(仅需一次)const createCredentialOptions = {publicKey: {challenge: Uint8Array.from...或新注册域名流# 此处简化为查询近期注册response = requests.get("https://api.securitytrails.com/v1/history/example.com/whois...结果:模拟钓鱼点击率降至4%;所有尝试使用窃取凭证登录真实SMS的请求均因缺少FIDO2断言被拒绝;自动域名监控系统识别并阻断17个新注册仿冒域;企业报告的真实钓鱼事件下降89%。...可探索基于时间的一次性密码(TOTP)作为过渡方案,但需警惕SIM交换攻击。长期看,政府服务应全面迁移到支持Passkey的标准认证体系。
Termux Termux终端有很多优秀的特性,这里要说两点: Termux有针对手机输入优化的键盘显示,长按KEYBOARD选项可打开该功能 Termux维护着适合Android的库,并自带包管理器apt...有自己的软件源,安装Termux后默认的软件源是Termux官网,即 http://termux.net,可打开源列表查看。...Ctrl+A -> 将光标移动到行首 Ctrl+C -> 中止当前进程 Ctrl+D -> 注销终端会话 Ctrl+E -> 将光标移动到行尾 Ctrl+K -> 从光标删除到行尾 Ctrl+L ->...安装Termux-api 安装Termux-api软件包安装完Termux-apiAPP后,Termux里面必须安装对应的包后才可以实现操作手机底层. pkg install termux-api 下面只列举一些可能会用到的...发送测试 termux-sms-send -n 10001 cxll 拨打电话 termux-telephony-call 拨打电话给10001中国电信,查看下话费有没有欠费~?
appsecret则添加到 sign校验参数的计算中 sign = md5(token+msg+timestamp+nonce+appsecret) 结合上面的参数,一个接口请求应该类似这样 http:...├── requirements.txt ├── test └── venv 增加了一个 api相关的文件包。...api/__init__.py from flask import jsonify def make_response_ok(data=None): resp = {'code': 0, 'msg...bp = Blueprint("auth", __name__, url_prefix='/api/auth') 短信接口的实现这里会使用到 redis,将请求到的短信验证码保存在 redis中,并设置过期时间...最后我们看一下 app.py from flask import Flask from api import auth, config from models import db app = Flask
我们将介绍如何使用最新的 gpt 模型将 SMS、WhatsApp 和音频视频功能等消息传递渠道添加到您的 AI 应用程序中。...我们还将介绍用于高级数据查询的新向量搜索抽象。了解这些更新如何简化您的数据工作流程并实现更高效、可扩展的应用程序开发。...加入我们,即使是最成熟的狗也能发现新的 AI 技巧,并将您的 WinForms LOB 应用程序提升到一个新的水平!...本次会议将涵盖: 新功能概述:发现新的 Fluent UI Blazor 库中的增强功能,包括更新的 Web 组件 架构变更:了解提高性能、可扩展性和可维护性的重大架构转变。...在本次会议中,我们将向您展示如何使用 Data API Builder 和 SQL Server 轻松实现 CQRS。通过分离读取和写入操作,您将提高性能、可扩展性和可维护性。
好在,我最终还是建立起了一支既有执行力和战斗力,又能不断适应环境变化的优秀队伍。 使用微服务构建可扩展后端 在刚开始构建后端时,我就知道可扩展性和适应性是其中的关键。...Email、Push 和 SMS 通知服务各自与对应的供应商集成。...从基础设施身上省下的时间不光能用于招聘移动开发人员,也能用来打磨后端。 Supabase 大大降低了数据库的设置和管理难度,它丰富的内置功能可以直接替代我们的大多数微服务。...# Retrieve a feed with products from app using Supabase generated GraphQL API { retailersCollection...因为我们可以设置由特定操作触发的自动营销活动,或者引入名为 marketing_campaigns 的新表。之后,营销经理只需要向表内插入一个带有参数的新行——比如作为通知目标的用户。
没有合适手机号的伙伴可以使用sms-activate.org网站来租用临时号码来完成手机验证。这个网站支持使用支付宝充值,充值一美元就完全够用了,加上佣金差不多7块多一点。...那有没有不用注册就能直接使用的工具或网站呢?答案是肯定的。在众多的可用网站中,咱筛选出一个相对比较好用的,那就是chat.forchange.cn。...中文版后,选择切换里面的第二个模式(避讳写法,望尽量,文字狱真真真可怕),然后将ChatGPT API的Keys填入按Enter键,VSCode将自动重启。...据说微软必应搜索和Edge浏览器开发版已经在计划集成ChatGPT,相信很快就能用上了,通过网址bing.com/new可以抢先预约使用。...参考资料:chat.forchange.cn 如需转载,请在公众号中回复“转载”获取授权,如未经授权擅自搬运抄袭的,本公众号将保留一切追责权利!
身份验证方案始终定义为类列表,DRF框架尝试对列表中的每个类进行身份验证,并使用成功进行身份验证的第一个类的返回值设置request.user和request.auth。...综上,选择TokenAuthentication,即选择Token的认证方式,需要在settings.py中添加到INSTALLED_APPS: INSTALLED_APPS = [ 'django.contrib.auth...显然,通过携带数据访问http://127.0.0.1:8000/api-token-auth/,生成了当前用户的token并获取到,在生成token的同时,自动将生成的token和当前用户存入表authtoken_token...相比于session,JWT将登录信息保存到本地,减轻了服务器的存储压力,并且可应用于单点登录。...显然,对于多个字段的验证,如果某一个字段验证失败,则提示该字段的错误信息,如果多个字段验证失败,则将这些字段的错误信息都显示出来。
好在,我最终还是建立起了一支既有执行力和战斗力,又能不断适应环境变化的优秀队伍。 使用微服务构建可扩展后端 在刚开始构建后端时,我就知道可扩展性和适应性是其中的关键。...Email、Push 和 SMS 通知服务各自与对应的供应商集成。...从基础设施身上省下的时间不光能用于招聘移动开发人员,也能用来打磨后端。 Supabase 大大降低了数据库的设置和管理难度,它丰富的内置功能可以直接替代我们的大多数微服务。...# Retrieve a feed with products from app using Supabase generated GraphQL API{ retailersCollection(...因为我们可以设置由特定操作触发的自动营销活动,或者引入名为 marketing_campaigns 的新表。之后,营销经理只需要向表内插入一个带有参数的新行——比如作为通知目标的用户。