Skip to content
This repository has been archived by the owner on Apr 9, 2023. It is now read-only.

Commit

Permalink
Optimizations, closing db
Browse files Browse the repository at this point in the history
  • Loading branch information
Ramon Navarro Bosch committed Feb 8, 2017
1 parent 74b93ae commit 3788951
Show file tree
Hide file tree
Showing 4 changed files with 8 additions and 4 deletions.
4 changes: 4 additions & 0 deletions src/plone.server/plone/server/factory/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
from plone.server.interfaces import IApplication
from plone.server.interfaces import IDatabaseConfigurationFactory
from plone.server.interfaces.content import IContentNegotiation
from plone.server.interfaces import IDatabase
from plone.server.traversal import TraversalRouter
from zope.component import getAllUtilitiesRegisteredFor
from zope.component import getUtility
Expand Down Expand Up @@ -214,3 +215,6 @@ def make_app(config_file=None, settings=None):
async def close_utilities(app):
for utility in getAllUtilitiesRegisteredFor(IAsyncUtility):
asyncio.ensure_future(utility.finalize(app=app), loop=app.loop)
for db in app.router._root:
if IDatabase.providedBy(db[1]):
db[1]._db.close()
5 changes: 3 additions & 2 deletions src/plone.server/plone/server/factory/content.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,14 @@
from zope.component import getUtility
from zope.component import provideUtility
from zope.interface import implementer
from concurrent.futures import ThreadPoolExecutor

import asyncio


@implementer(IApplication)
class ApplicationRoot(object):

executor = ThreadPoolExecutor(max_workers=100)
root_user = None

def __init__(self, config_file):
Expand All @@ -27,7 +28,7 @@ def add_async_utility(self, config):
factory = import_class(config['factory'])
utility_object = factory(config['settings'])
provideUtility(utility_object, interface)
task = asyncio.ensure_future(utility_object.initialize(app=self))
task = asyncio.ensure_future(utility_object.initialize(app=self.app))
self.add_async_task(config['provides'], task, config)

def add_async_task(self, ident, task, config):
Expand Down
2 changes: 1 addition & 1 deletion src/plone.server/plone/server/json/serialize_content.py
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ def __call__(self):
security = IInteraction(self.request)
length = len(self.context)

if length > MAX_ALLOWED:
if length > MAX_ALLOWED or length == 0:
result['items'] = []
else:
result['items'] = [
Expand Down
1 change: 0 additions & 1 deletion src/plone.server/plone/server/transactions.py
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,6 @@ def savepoint(self):


class RequestAwareConnection(ZODB.Connection.Connection):
executor = ThreadPoolExecutor(max_workers=100)
lock = threading.Lock()

def _getReadCurrent(self):
Expand Down

0 comments on commit 3788951

Please sign in to comment.