Quais problemas de compatibilidade existem durante a migração?
- Diferença de args
V1:
args = parser.parse_args()
Após a migração para V2, será:
args = parser.parse_args(args=[])
O sys.argv do tempo de execução do Python varia entre as duas versões.
Para V2, é ['/home/snuser/runtime/python3.6/server.py', '127.0.0.1:31536', '/opt/function/code'], cujos dois últimos parâmetros não estão disponíveis para V1.
- Diferença de asyncio
V1:
loop = asyncio.get_event_loop() loop.run_until_complete(func(arg1, arg2)) loop.close()
Após a migração para 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()
Na V1, asyncio.get_event_loop() obtém o loop de eventos atual de thread do SO (thread principal). Ele lançará RuntimeError na V2, porque o tempo de execução do Python da V2 não executa funções em thread principal.
Para usar asyncio na V2, crie um loop de eventos.