2017-03-15 42 views
0

我为每个cpu内核构建多个进程。当我尝试测试,并从这些过程中发送多个请求,我得到一个异常:并发查询时出现SQLAlchemy异常

psycopg2.OperationalError: SSL error: decryption failed or bad record mac 

它工作在单进程模式很好,但是当我建立一个以上的过程,显示此错误。

+1

您可以添加代码片段 –

+0

[SQLAlchemy和多个进程的连接问题]的可能重复(http://stackoverflow.com/questions/41279157/connection-problems-with-sqlalchemy-and-multiple-processes) –

+0

@IljaEverilä谢谢,这很有用 – mahdi13

回答

-1

您可以在postgres配置文件上禁​​用SSL。改变这一行:

ssl = true

ssl = false

配置文件通常是/etc/postgresql/*.*/main/postgresql.conf

0

这可能是因为你的进程共享同一个连接池,并同时书面通知相同的postgres连接(s)。

您不提供关于如何实现多处理的很多信息,但是如果是分叉处理,常见的缺陷是引擎是在fork之前创建的,它初始化TCP连接到数据库,然后获取复制到新进程并导致多个进程与相同物理套接字进行交互。

补偿包括:

  • 禁用池和按需连接使用:poolclass = NullPool,
  • 重新创建后叉池:延缓sqla_engine.dispose(),或
  • create_engine直到分叉之后