在 Python 中执行我的代码时出现此错误。
这是我的 Python - DataBaseHelper.py:
import psycopg2
#class
class DataBaseHelper:
database = "testdata";user = "test";password = "pass123"; host = "mtest.75tyey.us-east-1.rds.amazonaws.com"
#create and return the connection of database
def getConection(self):
self.conn = psycopg2.connect(database=self.database, user = self.user, password = self.password, host = self.host, port = "5432")
return self.conn
Run Code Online (Sandbox Code Playgroud)
然后我导入这个文件并在另一个 python 文件中使用 - MyScript.py:
import sys
import uuid
from DBHelper import DataBaseHelper
from ExecutionLogHelper import ExecutionLogHelper
from GotUtility import GotUtility
class MyScript:
def __init__(self,):
self.con = DataBaseHelper().getConection()
self.logHelper = ExecutionLogHelper()
self.uuid = self.logHelper.Get_TEST_Run_Id()
Run Code Online (Sandbox Code Playgroud)
当我同时运行我的代码时,它给了我这个错误:
psycopg2.errors.AdminShutdown: terminating connection due to administrator command
SSL connection has been closed unexpectedly
Run Code Online (Sandbox Code Playgroud)
我不明白为什么我会收到这个错误。当我再次运行 Python 程序时,它起作用了。我检查了 Postgres 服务器是否正在运行,没有重启,没有关闭信号。这对我来说每隔几个小时就会发生一次。
经过一番挖掘,我找到了一些答案。根据这个链接:
此错误消息来自 Postgres 外部程序的干预:http://www.postgresql.org/message-id/4564.1284559661@sss.pgh.pa.us
为了详细说明,此链接说:
如果用户使用“service postgresql stop”停止 postgresql 服务器,或者在 postgresql PID 上调用了任何 SIGINT,则会发生此错误。
解决方案: 由于您的代码是并发运行的,同一时间、同一行的多个事务可能会导致此错误。所以你必须确保这种情况不会发生...查看此处了解更多详细信息:
当您更新事务中的行时,这些行将被锁定,直到提交事务为止。
如果您无法做到这一点,我建议您启用查询日志记录并查看其中是否有奇怪的内容。