¿Qué problemas de compatibilidad existen durante la migración?
- Diferencia de args
V1:
args = parser.parse_args()
Después de la migración a V2, será:
args = parser.parse_args(args=[])
El sys.argv del tiempo de ejecución de Python varía entre las dos versiones.
Para V2, es ['/home/snuser/runtime/python3.6/server.py', '127.0.0.1:31536', '/opt/function/code'], cuyos dos últimos parámetros no están disponibles para V1.
- Diferencia de asyncio
V1:
loop = asyncio.get_event_loop() loop.run_until_complete(func(arg1, arg2)) loop.close()
Después de la migración a V2, será:
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()
En V1, asyncio.get_event_loop() obtiene el bucle de evento actual del subproceso del SO (subproceso principal). Lanzará RuntimeError en V2, porque el tiempo de ejecución de Python de V2 no ejecuta funciones en el subproceso principal.
Para utilizar asyncio en V2, cree un bucle de eventos.