scrapy
https://gitee.com/bitterteaer/scrapy-learn.git
在代码中运行scrapy的方法@https://www.cnblogs.com/kakashiS/p/7475742.html官方文档给出了两个scrapy工具:
scrapy.crawler.CrawlerRunner, runs crawlers inside an already setup Twisted reactor
scrapy.crawler.CrawlerProcess, 父类是CrawlerRunner
scrapy框架基于Twisted异步网络库,CrawlerRunner和CrawlerProcess帮助我们从Twisted reactor内部启动scrapy。
直接使用CrawlerRunner可以更精细的控制crawler进程,要手动指定Twisted reactor关闭后的回调函数。指定如果不打算在应用程序中运行更多的Twistedreactor,使用子类CrawlerProcess则更合适。
下面简单是文档中给的用法示例:
12345678910111213 ...
celery
https://gitee.com/bitterteaer/celery-learn.git
Celery的架构由三部分组成,消息中间件(message broker),任务执行单元(worker)和任务执行结果存储(task result store)组成。
基本使用celery_task
1234567891011import celeryimport timebackend='redis://127.0.0.1:6379/1'broker='redis://127.0.0.1:6379/2'cel=celery.Celery('test',backend=backend,broker=broker)@cel.taskdef send_email(name): print("向%s发送邮件..."%name) time.sleep(5) print("向%s发送邮件完成"%name) return "ok"
注意,异步任务文件命令执行: ...
appsmith使用第三方库进行http请求
安装
使用12345678910111213141516171819export default { debugMeter: async () => { let rID = Number(Select1.selectedOptionValue); let metricName = Input6.text; let meterAsset = Input7.text; let busAddr = Input8.text; let meterAddr = Number(Input9.text); let registerAddr = Number(Input10.text); let registerCount = Number(Input11.text); let ratio = Number(Input12.text); let result = await ky.post("http://172.16.0.181:9090/debug_meter",{json:{rID,metricName,meter ...
sqlalchemy created_at字段自动生成当前时间写法
1created_at = Column(Integer, nullable=False, default=lambda: int(time.time()))
使用lambda即可使其实时生成,如果不使用lambda,则无法实时获取时间,只会记录第一次的时间
使用fastapi background task踩的第一个坑
场景复原(这份代码可以和我之前的业务产生同样的效果)12345678910111213141516171819202122async def task(): print("1......") time.sleep(5) print("ok") @router.post("/1")async def crate(background_tasks: BackgroundTasks): s = time.time() background_tasks.add_task(task) # task() t = time.time() - s return {"success": True, "time": t}@router.post("/2")async def crate(background_tasks: BackgroundTasks): s = time.time() # task( ...
go国内代理
GOPROXY=https://goproxy.cn,direct
FastAPI提供了多种安全性机制,包括OAuth2、API密钥等。例如,我们可以使用API密钥保护我们的API
12345678910from fastapi.security import APIKeyHeaderapi_key_header = APIKeyHeader(name="api_key")@app.get("/items/{item_id}", response_model=Item)def read_item(item_id: int, api_key: str = Depends(api_key_header)): if api_key != "my_secret_key": raise HTTPException(status_code=403, detail="Invalid API key") return items[item_id]
在 Kubernetes(k8s) 上部署 Spring Boot 应用程序:应用程序使用环境变量中的错误端口属性
如果我使用此配置启动部署(即先启动服务,然后启动部署)则 pod 在启动期间会失败。在日志中,我可以找到以下消息:
123456789101112***************************APPLICATION FAILED TO START***************************Description:Binding to targetorg.springframework.boot.autoconfigure.web.ServerProperties@42f93a98 failed:Property: server.portValue: tcp://10.98.151.181:8080Reason: Failed to convert property value of type 'java.lang.String' to required type 'java.lang.Integer' for property 'port'; nested exception is org.springfra ...