服务使用 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,所以无法配置限制。都蛋疼了。
|