鱼C论坛

 找回密码
 立即注册
查看: 648|回复: 3

请教有现实开发经验的大佬一个问题

[复制链接]
发表于 2018-7-18 10:25:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 天圆突破 于 2018-7-18 10:44 编辑

因为要给单位部门写一个在线数据库的小东西(单位内的部门间资源共享),功能包括查询数据和下载对应文档,第一时间就想到socketserver模块。但是有几个疑虑:

1. socketserver是多线程实现异步,因为GIL,python的多线程效率实在不敢恭维。尤其还涉及了文件传输,会不会单核爆炸啊

2. 如果用socketserver的话,理想能够同时支持在线人数会是多少?(要是在实际应用范围内的话,也不是不能接受)

3. 总而言之就是想问,socketserver是不是个玩具,只能用来玩不能放到生产环境去用...
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-7-18 10:42:24 | 显示全部楼层
本帖最后由 天圆突破 于 2018-7-18 10:51 编辑

还有一个问题想请教大佬

  1. class StandardServer:
  2.     def __init__(self):
  3.         self.sel = selectors.DefaultSelector()
  4.         sock = socket(AF_INET, SOCK_STREAM)
  5.         sock.bind(HOST)
  6.         sock.listen(BLOCKING)
  7.         sock.setblocking(False)
  8.         self.sel.register(sock, selectors.EVENT_READ, self.accept)

  9.     def runForever(self):
  10.         while True:
  11.             events = self.sel.select()
  12.             for key, mask in events:
  13.                 callback = key.data
  14.                 callback(key.fileobj, mask)

  15.     def accept(self,sock, mask):
  16.         conn, addr = sock.accept()
  17.         conn.setblocking(False)
  18.         #位置一
  19.         self.sel.register(conn, selectors.EVENT_READ, self.read)

  20.     def read(self,conn, mask):
  21.         try:
  22.             data = script.recv(conn, BUFF_SIZE)
  23.             # 位置二
  24.             if not data:
  25.                 raise Exception
  26.         except:
  27.             self.sel.unregister(conn)
  28.             conn.close()
  29.             return

  30.         if hasattr(self, data['action']):
  31.             self.data['action'](data)

  32. if __name__ == '__main__':
  33.     server = StandardServer()
  34.     server.runForever()
复制代码


这是写了一个用selectors模块的IO multiplexing模型服务器,想请教大佬的问题是:发现没有地方放用户验证模块,放位置一怕一旦阻塞就会全进程阻塞,放位置二确定不了哪条conn验证过,哪条没验证过。不像socketserver那样多线程执行可以直接放到类属性里。
sock或者conn对象里面能不能添加用户自己定义的信息?还是有更好的方法做用户验证?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-18 13:14:43 | 显示全部楼层
你要的是BS架构,还是CS架构?如果是BS,为什么不直接用web框架呢????django或者tornado。
如果是CS架构。那就需要慢慢搞了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-18 14:48:43 | 显示全部楼层
colinshi 发表于 2018-7-18 13:14
你要的是BS架构,还是CS架构?如果是BS,为什么不直接用web框架呢????django或者tornado。
如果是CS架 ...

CS,客户端打算用tkinter慢慢搞
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-12-31 19:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表