mirror of
https://git.pleroma.social/pleroma/relay.git
synced 2024-11-22 06:27:59 +00:00
ensure cache, database, and http client are closed on quit
This commit is contained in:
parent
b259f2d760
commit
6f3a1db17d
|
@ -57,6 +57,7 @@ class Application(web.Application):
|
||||||
return
|
return
|
||||||
|
|
||||||
self.on_response_prepare.append(handle_access_log)
|
self.on_response_prepare.append(handle_access_log)
|
||||||
|
self.on_cleanup.append(handle_cleanup)
|
||||||
|
|
||||||
for path, view in VIEWS:
|
for path, view in VIEWS:
|
||||||
self.router.add_view(path, view)
|
self.router.add_view(path, view)
|
||||||
|
@ -172,30 +173,8 @@ class Application(web.Application):
|
||||||
self.set_signal_handler(False)
|
self.set_signal_handler(False)
|
||||||
self['proc'] = None
|
self['proc'] = None
|
||||||
|
|
||||||
|
self.cache.close()
|
||||||
# not used, but keeping just in case
|
self.database.close()
|
||||||
class GunicornRunner(WSGIApplication):
|
|
||||||
def __init__(self, app: Application):
|
|
||||||
self.app = app
|
|
||||||
self.app_uri = 'relay.application:main_gunicorn'
|
|
||||||
self.options = {
|
|
||||||
'bind': f'{app.config.listen}:{app.config.port}',
|
|
||||||
'worker_class': 'aiohttp.GunicornWebWorker',
|
|
||||||
'workers': app.config.workers,
|
|
||||||
'raw_env': f'CONFIG_FILE={app.config.path}'
|
|
||||||
}
|
|
||||||
|
|
||||||
WSGIApplication.__init__(self)
|
|
||||||
|
|
||||||
|
|
||||||
def load_config(self):
|
|
||||||
for key, value in self.options.items():
|
|
||||||
self.cfg.set(key, value)
|
|
||||||
|
|
||||||
|
|
||||||
def run(self):
|
|
||||||
logging.info('Starting webserver for %s', self.app.config.domain)
|
|
||||||
WSGIApplication.run(self)
|
|
||||||
|
|
||||||
|
|
||||||
async def handle_access_log(request: web.Request, response: web.Response) -> None:
|
async def handle_access_log(request: web.Request, response: web.Response) -> None:
|
||||||
|
@ -218,6 +197,12 @@ async def handle_access_log(request: web.Request, response: web.Response) -> Non
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
async def handle_cleanup(app: Application) -> None:
|
||||||
|
await app.client.close()
|
||||||
|
app.cache.close()
|
||||||
|
app.database.close()
|
||||||
|
|
||||||
|
|
||||||
async def main_gunicorn():
|
async def main_gunicorn():
|
||||||
try:
|
try:
|
||||||
app = Application(os.environ['CONFIG_FILE'], gunicorn = True)
|
app = Application(os.environ['CONFIG_FILE'], gunicorn = True)
|
||||||
|
|
Loading…
Reference in a new issue