Python语言从V1迁移到V2时需注意哪些兼容性问题?
- args的区别
如果迁移到V2,需修改为:
args = parser.parse_args(args=[])
因为V1和V2 python runtime的sys.argv不一样。
V2是['/home/snuser/runtime/python3.6/server.py', '127.0.0.1:31536', '/opt/function/code'],比v1多了后面2个参数。
- asyncio的区别
如果迁移到V2,需修改为:
loop_tmp = asyncio.new_event_loop() asyncio.set_event_loop(loop_tmp) loop = asyncio.get_event_loop() loop.run_until_complete(func(arg1, arg2)) loop.close()
因为asyncio.get_event_loop()是从OS线程(主线程)获取当前事件循环,而V2的Python runtime不是在主线程运行用户函数,所以函数内asyncio.get_event_loop()会抛出RuntimeError。
V2使用asyncio需要新建并设置事件循环。