Day11 Lab 1 - 简单的Object storage系统

我们的第一个Lab就从Simple object system开始,程序码我放在这

https://github.com/kaichiachen/python-simple-object-storage/tree/master/simple_obj_system

我们只需要两个额外的library - flask和requests

可以透过pip安装指令进行安装

pip install flask requests

接下来讲解Lab里程序的部分

从前端开始讲顺便说我们Object storage的API接口,我们会提供什麽功能

前端的程序码都在frontend.py里面,用的是requests的http协议对後端进行request

我们的唯一功能就是根据参数object name和object content,利用post上传一个object

server_url = f"http://{args.server}:{args.port}"
res = requests.post(f"{server_url}/{args.name}", files={'file': args.content})

如果上传成功,就可以在後端看到有object被上传成功并且存在电脑里,接下来我们讲後端的逻辑

後端

後端的程序码在资料夹backend里面,只有一个 run.py,短短40行不到的程序码

Flask的基本用法我就不多说明了,我直接讲系统的处理逻辑

一开始系统启动後,会建立一个存object的资料夹,位在/tmp/objs

def prepareObjEnv():
   try:
     os.mkdir('/tmp/objs', 0o755)
   except Exception as e:
      # should be file exists
      print(e, flush=True)

   dir_path = os.path.join('/', 'tmp', 'objs')
   return dir_path

然後我们只有两个API,监听Get和Post method,我们接收到来自frontend的post object request後,会执行

f = request.files['file']
f.save(os.path.join(DIR_PATH, f"{escape(obj_name)}"))

直接把object存进去指定的资料夹下面

读者可以试着在起动好後端程序後,执行前端程序

python frontend.py --name 'obj01' --content 'helloworld'

然後再後端看看上传好的object的内容

#> cat /tmp/objs/obj01
helloworld

这个Lab真的非常非常简单,下一个Lab我们会用将近十天的份量去讲解他,今天这个看起来只是文件的上传而已,下一个Lab就会是分散式储存系统了


<<:  [Day10]C# 鸡础观念- 重播与停止 while回圈与break

>>:  [Day11]Bangla Numbers

【C++】计算程序的执行时间

我们来看到C++要如何计算程序码的执行时间呢 ~ 学习目标: 计算程序码执行时间的实务 学习难度: ...

Simplifying Conditional Logic

本文同步於个人部落格: Simplifying Conditional Logic This art...

Leet Code 1. Two Sum

翻译 给一个里面元素为int的阵列,阵列中会有两个元素加起来等於target,回传这两个元素的位置。...

待更新

待更新待更新待更新待更新待更新待更新待更新待更新待更新待更新待更新待更新待更新待更新待更新待更新待更...

EP22 - [Ruby on Rails] 安装 Sinopac-FunBiz 套件进行刷卡

Youtube 频道:https://www.youtube.com/c/kaochenlong ...