我有一个使用Gunicorn的非常基本的网络服务器。回调是本机python函数。以下是回调中app函数的片段。重新启动gunicorn父进程后,有时会使用VOCFE_STATUS_NO_SCHEMA调用raise_error函数,而不会打印其上方的日志行。对于在重新启动之前一直工作的请求,会发生这种情况,并且会发生在生成的所有8个子gunicorn进程中。杀死一个独立的gunicorn子进程会纠正被杀害的孩子的问题 - 请求处理也没问题。
如果重启后第一个请求没有显示问题,则永远不会发生。
同事和我一样缺乏理论,所以任何有效的理论都会帮助我。
if path not in SCHEMA_IGNORANT_PATHS:
if 'serverState' in body and 'schemaName' in body['serverState']:
schema = body['serverState']['schemaName']
elif len (path_bits) > 1:
schema = path_bits[1]
else:
schemas = be_db.select('public.tenant', {}, ['schema_name'])
if not schemas or len(schemas) == 0:
LOG.info("No schema in the tenant table")
return raise_error (response_callback, VOCFE_STATUS_NO_SCHEMA)
if len(schemas) > 1:
LOG.info("No client signaled schema, but {} schemas available".format(len(schemas)))
return raise_error (response_callback, VOCFE_STATUS_INVALID_SCHEMA)
schema = schemas[0]['schema_name']