pycharm使用docker容器中的python环境
type
Post
status
Published
date
Jun 19, 2022
slug
pycahrm-1
summary
pycharm使用docker容器环境中的python编译器
tags
Python
pycharm
docker
category
技术工具
icon
password
Property
Jun 19, 2022 01:27 PM
Pycharm使用docker中的python环境,不mess操作系统
🤔 Pycharm使用docker中的python环境
- 背景
- 结果
📝内容
1.pull相关容器
在docker hub中找到对应的容器,并pull到本地,或者自己在本地制作相关容器,这里以watcher_engine为例
# docker pull kolla/centos-binary-watcher-engine:rocky
2.将pycharm项目运行环境指定到容器
a.打开pycharm,打开要是用的项目,然后
command+,
打开设置
python建立httpserver的几种方式
type
Post
status
Published
date
Jun 19, 2022
slug
python-1
summary
介绍几种python启动http server的几种方式
tags
Python
开发
category
技术分享
icon
password
Property
Jun 19, 2022 04:00 PM
原创
🤔 如果我们想启动一个http server
- 使用python我们可以怎么实现
📝实现http server
wsgiref
python内置的简单的wsgi(Python Web Server Gateway Interface)的实现
一次只能接收一个请求
# coding:utf-8 from wsgiref.simple_server import make_server import time def my_handler(environ, start_response): request_method = environ['REQUEST_METHOD'] if request_method == 'GET': if environ['PATH_INFO'] == "/": # 'QUERY_STRING': 'ha=1&oo=m' params = environ['QUERY_STRING'] if params: qurrys = params.split('&') qs = (q.split("=") for q in qurrys) print(list(qs)) token = "" if 'HTTP_X_AUTH_TOKEN' not in environ else environ['HTTP_X_AUTH_TOKEN'] # 第一个参数必须是至少两个用空格分开的内容 # 第二个参数是headers start_response("202 OK", [("content-type","text/json")]) time.sleep(100) return "Hello World %s" % token elif environ['PATH_INFO'] == "/hi": start_response("202 OK", [("content-type","text/plain")]) return "Hello 00" else: start_response("404 NOT FOUND", [("content-type","text/plain")]) return "404 NOT FOUND" elif request_method == "POST": start_response("202 OK", [("content-type","text/plain")]) return "Hello POST" else: start_response("404 NOT FOUND", [("content-type","text/plain")]) return "404 NOT FOUND" server = make_server("0.0.0.0", 8888, my_handler) # 单任务的,一个请求处理完才会处理另外一个请求 server.serve_forever()
eventlet
import eventlet eventlet.monkeypatch() from eventlet import wsgi def hello_world(env, start_response): print(env) start_response('200 OK', [('Content-Type', 'text/plain')]) return ['Hello, World!\r\n'] def run_service_world(listen_fd): try: # 内部使用绿色线程池来处理请求,一个请求遇到io操作时, # 另外一个请求到来,会处理该请求,不会被阻塞 wsgi.server(listen_fd, site=hello_world) except Exception as e: print("Error starting thread.") raise listen_fd1 = eventlet.listen(("", 8090)) run_service_world(listen_fd1)
🤗总结归纳
使用Anaconda作为操作系统安装程序的分区原则
type
Post
status
Published
date
Jun 16, 2022
slug
anaconda-partition
summary
Anaconda和blivet分区规则
tags
工具
category
技术分享
icon
password
Property
Jun 18, 2022 08:25 AM
使用CentOS iso安装操作系统时,自动分区时,CentOS官网说的swap大小规则如下图,但是在自己测试时,并不会完全按照图里来,遂去看了pyanaconda和blivet的源码,得出本文内容。

关于图中的RAM来源:
- anaconda安装程序通过blivet获取total memory
- blivet读取操作系统运行时的 /proc/meminfo里的MemTotal值,其值是物理内存减去内核二进制代码后的值,并进行以下换算
total_mem = (MemTotal/128+1)*128
- anaconda拿到这个值后,还会做下转换
mem = (mem1/16+1)*16
也就是在安装系统时,mem是比物理内存小。
实测物理内存大于等于66G时,会满足最后一档,也就是自动分区时,swap是4G
物理内存等于64G时,满足的是倒数第二档,swap是取硬盘容量的10%与物理内存一半的最小值
示例文章1

图片标题
type
Post
status
Published
date
Nov 5, 2021
slug
example-1
summary
这是示例的文章摘要,摘要内容可被用做搜索,预览。文章列表默认展示概要;若要在列表直接展示文章内容,可在blog.config.js中配置。
tags
思考
建站
category
学习思考
icon
password
Property
Jun 15, 2022 04:49 PM
一、模板使用说明
Notion页面中,每一篇文章都有以下属性🤔:
二、示例段落
生活的意义并不是与他人争高下,而在于享受努力实现目标的过程,结果只是对自己行动的嘉奖。

1.将进酒
君不见黄河之水天上来,奔流到海不复回。
君不见高堂明镜悲白发,朝如青丝暮成雪。
人生得意须尽欢,莫使金樽空对月。
天生我材必有用,千金散尽还复来。
烹羊宰牛且为乐,会须一饮三百杯。
岑夫子,丹丘生,将进酒,杯莫停。
与君歌一曲,请君为我倾耳听。
钟鼓馔玉不足贵,但愿长醉不愿醒。
古来圣贤皆寂寞,惟有饮者留其名。
陈王昔时宴平乐,斗酒十千恣欢谑。
主人何为言少钱,径须沽取对君酌。
五花马、千金裘,呼儿将出换美酒,与尔同销万古愁。