文档首页/ 函数工作流 FunctionGraph/ 常见问题/ V1迁移V2相关问题/ Python语言从V1迁移到V2时需注意哪些兼容性问题?
更新时间:2022-09-23 GMT+08:00
分享

Python语言从V1迁移到V2时需注意哪些兼容性问题?

  1. args的区别
    V1使用的语法:
    args = parser.parse_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个参数。

  2. asyncio的区别
    V1使用的语法:
    loop = asyncio.get_event_loop()
    loop.run_until_complete(func(arg1, arg2))
    loop.close()

    如果迁移到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需要新建并设置事件循环。

相关文档