在我们的开发环境中,我们开始探索芹菜的用途。问题是启动任务时,SQLAlchemy通常很难连接到我们的Amazon / AWS RDS实例。无论我尝试了什么设置,这种情况都会在一段时间后发生,但是很难说多久。我们的数据库是AWS RDS上生产数据库的快照,具有所有相同的参数/设置。
错误包括...
OperationalError: (_mysql_exceptions.OperationalError) (2013, 'Lost connection to MySQL server during query')...(Background on this error at: http://sqlalche.me/e/e3q8)
...或...
OperationalErrorOperation : MySQL Connection not available.
我们的引擎...
engine = sa.create_engine(SA_ENGINE, echo=False, pool_recycle=90, pool_pre_ping=True)
(我尝试了pool_recycle
的大量变体)
在数据库方面,我更改了以下参数(尽管有些是极端的,我已经尝试了各种变体)...
interactive_timeout = 28800
wait_timeout = 28800
max_heap_table_size = 32000000000
我尝试包装每个查询以重新连接,但这也不起作用。请注意,此代码取自有关类似主题的StackOverflow答案...
def db_execute(conn, query):
try:
result = conn.execute(query)
print(result)
except sa.exc.OperationalError: # may need more exceptions here (or trap all)
conn = engine.connect() # replace your connection
result = conn.execute(query) # and retry
return result
这是一个为期三天的自转,我被困住了...我希望外面的人有一些见识或指导吗?
更新
我已经从等式中完全删除了celery,但是现在它仍然是随机退出的,甚至是在相同函数流中的两次查询之间。在生产服务器上,该软件现在几乎完全相同。