服务使用 flask + postgresql + gunicorn + supervisor + nginx 实现
报错日志:
File "/usr/local/lib/python2.7/site-packages/sqlalchemy/sql/elements.py", line 287, in _execute_on_connection return connection._execute_clauseelement(self, multiparams, params) File "/usr/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1107, in _execute_clauseelement distilled_params, File "/usr/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1248, in _execute_context e, statement, parameters, cursor, context File "/usr/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1466, in _handle_dbapi_exception util.raise_from_cause(sqlalchemy_exception, exc_info) File "/usr/local/lib/python2.7/site-packages/sqlalchemy/util/compat.py", line 383, in raise_from_cause reraise(type(exception), exception, tb=exc_tb, cause=cause) File "/usr/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1244, in _execute_context cursor, statement, parameters, context File "/usr/local/lib/python2.7/site-packages/sqlalchemy/engine/default.py", line 552, in do_execute cursor.execute(statement, parameters) OperationalError: (psycopg2.OperationalError) SSL SYSCALL error: EOF detected
我已经搜索了报错OperationalError: (psycopg2.OperationalError) SSL SYSCALL error: EOF detected
,但是没找到有效的解决办法。
不知道有没有同学遇到过类似问题,可否分享一下解决思路?
1 fishcg 2019-04-02 00:40:01 +08:00 OperationalError 异常一般是数据库连接意外断开、 数据库名未找到、事务处理失败、内存分配错误等等,是不是连接池大小的问题 |
![]() | 2 autotesting OP @fishcg 我没有单独指定连接池,我用的默认值,我看默认值 SQLALCHEMY_POOL_SIZE=5,按道理应该不是,我如果不用 docker 启动服务,直接命令行 gunicorn 启动服务,没有出现类似的数据库连接问题。 |
![]() | 3 learningman 2019-04-02 12:24:14 +08:00 可以用 host 的网络模式试试 |
![]() | 4 autotesting OP @learningman 你好,我试了一下启动命令,我 docker 刚开始接触,我执行 docker run -t -i -d --net=host -p 80:80 --name web_flask1 --mount type=bind,source=/app/,target=/app/ app:0.0.3,命令行提示-p 参数就无效了,那么我怎么实现指定端口去访问容器中服务? |
5 julyclyde 2019-04-03 14:29:07 +08:00 @autotesting 容器技术解决了其他社会制度不存在的问题 |
![]() | 6 autotesting OP @julyclyde 那我遇到的问题有解决思路吗? |
7 julyclyde 2019-04-03 19:10:52 +08:00 你这个看着像网络问题。不确定 |
8 fohnwind 2019-04-05 18:05:43 +08:00 @autotesting 已经指定了网络是 host 模式,-p 参数就无效了。-p 的意思是 bridge 方式启动 |
![]() | 9 autotesting OP @fohnwind 恩我了解,那这个时候该怎么用呢,比如我在 docker 中启动服务的时候暴露了 nginx 的 80 端口,那么我在宿主机该访问什么 ip:port 去访问 docker 中的服务呢? |
![]() | 10 learningman 2019-04-06 13:08:16 +08:00 @autotesting host 模式下内部端口就是外部端口,你在外部访问的就是你 nginx listen 的端口 |
![]() | 11 fire9 2019-04-06 16:21:55 +08:00 容器之间可以用 link 啊. 感觉开发环境用 docker-compose 挺方便的. |
![]() | 12 autotesting OP @learningman 我是在 mac 下启动的 docker 命令,然后比如 docker run --network host -d 4c81e42e4e0d,我想开启 80 端口,就是无效的 |
13 petercui 2019-04-16 11:15:15 +08:00 @autotesting macOS 不支持 host 模式,不用试了。 |
![]() | 14 autotesting OP @petercui 悲剧了,我现在想在 macOS 上启动的 nginx 服务内限制 ip 访问,发现 nginx 内无法获取真实 ip,所以无法配置限制。都蛋疼了。 |