2.自动收集rpc函数

服务器可被客户端调用的函数,不会有多少就去写多少到字典中, 所以需要自动去收集可被调用函数,这样就方便许多。
  1. collect.py
  2. #1.第一种方法也比较傻,适合rpc文件较少的情况
  3. import rpc1
  4. DICT = {}
  5. for name in dir(rpc1):
  6. if name.startswith("__") or name.endswith("__"):
  7. continue
  8. DICT[name] = getattr(rpc1, name)
  9. rpc1.py
  10. #被调用函数
  11. def func():
  12. return 1
  1. #第二种相对智能一些
  2. 将所有可被调用函数的文件写入固定文件夹中,比如取名为handler的文件夹。直接将模块import或者也可以写入一个字典中
  3. #name为当前文件与handler的相对路径
  4. _imported = []
  5. for f in os.listdir(name + "/handler"):
  6. if f.find('.pyc') > 0:
  7. _subfix = '.pyc'
  8. elif f.find('.pyo') > 0:
  9. _subfix = '.pyo'
  10. elif f.find('.py') > 0:
  11. _subfix = '.py'
  12. else:
  13. continue
  14. fname, _ = f.rsplit(_subfix, 1)
  15. if fname and fname not in _imported:
  16. _handlers_name = '%s.%s' % (module, fname)
  17. __import__(_handlers_name)
  18. _imported.append(fname)