Linux ftp client hangs when I type "ls" command with 200 PORT command successful message

I need to download certain XML files daily for my web app. This is a legacy app in Python, but before the app starts, it can run pre and post-hooks. So, I run custom ftp commands and scripts. However, whenever I run the ftp command to download in the script, it gets hanged and then timeout. So everything fails. I did a manual login to test it:

ftp-ssl {legacy-ftp-app-server-ip}

OR withput SSL mode:

ftp {legacy-ftp-app-server-ip}

After the username and password were punched in, I typed the ls:

ftp> ls

It will get stuck at:

200 PORT command successful

Eventually:

^C
ssl_getc: SSL_read returned -1 - error:00000000:lib(0)::reason(0)
421 Service not available, remote server has closed connection

receive aborted
waiting for remote to finish abort
ftp> 

So, How do I fix this?