Tenho que fazer um desenvolvimento, uma interface de comunicação entre o sistema e um lector de código. Todo o que eu preciso para deselvolver esse projeto o tenho em Python, já tenho uma parte do projeto.
Mas tenho a duvida que fazer para integrar isso com Advpl. Que é o melhor a fazer, uma API o tentar fazer uma DLL?.
A comunicação via .DLL é mais rápida, porém eu particularmente recomendo a criação de uma API (se possível REST), pois APIs web não mantém vínculo com a arquitetura do sistema operacional, mantendo uma melhor compatibilidade com as futuras atualizações e funcionando em qualquer máquina utilizada.
A forma mais utilizada para comunicação entre aplicações, é um serviço, normalmente sendo um serviço REST.
A utilização de DLL tem algumas questões que precisam ser levadas em consideração, como a arquitetura, DLL 32bits, DLL 64bits, isso influência, enquanto para um serviço, não existe essa preocupação.
A DLL criada para ADVPL precisa seguir um padrão, e normalmente você precisa ter um client, pois a grande maioria de funções que abrem um DLL em ADVPl, fazem isso no client e não no server, não conheço nenhuma DLL que seja aberta pelo server exceção pelas DLLs que fazem parte do próprio binário, como a dbapi.
O serviço você tem a preocupação de performance e memória, uma vez que o serviço for em ADVPL, você vai subir o serviço de REST, que fica escutando uma porta, por vezes com o ambiente aberto, tudo isso tem um impacto de performance e memória no seu servidor.
Não vou te dar uma resposta, acho válido inclusive você desenvolver um POC para ambas as situações, e inclusive te passo uma terceira forma, é possível fazer isso utilizando RPC, o appserver está apto a fazer isso, inclusive utilizando de linguagens distintas, a famosa função RpcSetEnv nasceu disso.