我正在尝试部署一个Python应用程序,该应用程序在Redshift上过滤我的数据库,然后将聚合的行插入到新表中。插入可以从python脚本正常工作,但是在运行docker映像时,它会返回 sqlalchemy.exc.OperationalError:(psycopg2.OperationalError)SSL SYSCALL错误:检测到EOF 。
根据Sqlalchemy文档:此错误是DBAPI错误,起源于数据库驱动程序(DBAPI),而不是SQLAlchemy本身。 https://docs.sqlalchemy.org/en/13/errors.html#operationalerror
def exec_query(eng,db_user,db_pw,query):
conn = eng.connect()
try:
conn.execute(query)
conn.close()
print('Connection closed.')
except exc.DBAPIError as e:
if e.connection_invalidated:
print("Connection was invalidated!")
exec_query(eng,db_user,db_pw,query)
即使在尝试除外块中,e.connection_invalidated
每次运行docker映像时也返回true。
Dockerfile
FROM python:3.7-alpine
WORKDIR /app
COPY . /app
RUN apk add postgresql-dev
RUN apk add build-base
RUN pip install --trusted-host pypi.python.org -r req.txt
EXPOSE 80
ENV NAME weekly_insert
CMD ["python", "script.py"]
sqlalchemy版本为1.3.5,并将可用于docker引擎的内存设置为7G.B。 感谢您为解决DBAPI问题提供的任何帮助。