mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-03 17:35:19 +01:00
Merge pull request #734 from pypeclub/bugfix/731-sync-server-crashes-with-missing-presets
#731 - better handling of missing presets
This commit is contained in:
commit
4415d5fb97
3 changed files with 43 additions and 19 deletions
|
|
@ -6,8 +6,8 @@ from googleapiclient import errors
|
|||
from .abstract_provider import AbstractProvider
|
||||
from googleapiclient.http import MediaFileUpload, MediaIoBaseDownload
|
||||
from pype.api import Logger
|
||||
from pype.lib import timeit
|
||||
from pype.api import config
|
||||
from ..utils import time_function
|
||||
|
||||
SCOPES = ['https://www.googleapis.com/auth/drive.metadata.readonly',
|
||||
'https://www.googleapis.com/auth/drive.file',
|
||||
|
|
@ -119,7 +119,7 @@ class GDriveHandler(AbstractProvider):
|
|||
|
||||
return roots
|
||||
|
||||
@timeit
|
||||
@time_function
|
||||
def _build_tree(self, folders):
|
||||
"""
|
||||
Create in-memory structure resolving paths to folder id as
|
||||
|
|
@ -467,7 +467,7 @@ class GDriveHandler(AbstractProvider):
|
|||
"""
|
||||
pass
|
||||
|
||||
@timeit
|
||||
@time_function
|
||||
def list_folders(self):
|
||||
""" Lists all folders in GDrive.
|
||||
Used to build in-memory structure of path to folder ids model.
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
from pype.api import config, Logger
|
||||
from pype.lib import timeit
|
||||
|
||||
import threading
|
||||
import asyncio
|
||||
|
|
@ -14,6 +13,7 @@ import os
|
|||
from avalon import io
|
||||
|
||||
from avalon.api import AvalonMongoDB
|
||||
from .utils import time_function
|
||||
|
||||
log = Logger().get_logger("SyncServer")
|
||||
|
||||
|
|
@ -93,25 +93,25 @@ class SyncServer():
|
|||
|
||||
try:
|
||||
self.presets = config.get_presets()["sync_server"]["config"]
|
||||
|
||||
self.sync_server_thread = SyncServerThread(self)
|
||||
|
||||
self.active_site = self.presets["active_site"]
|
||||
self.remote_site = self.presets["remote_site"]
|
||||
|
||||
# try to activate providers, need to have valid credentials
|
||||
self.active_sites = []
|
||||
for provider in lib.factory.providers.keys():
|
||||
for site in lib.factory.providers[provider][0].get_presets(). \
|
||||
keys():
|
||||
handler = lib.factory.get_provider(provider, site)
|
||||
if handler.is_active():
|
||||
self.active_sites.append((provider, site))
|
||||
except KeyError:
|
||||
log.debug(("There are not set presets for SyncServer."
|
||||
" No credentials provided, no syncing possible").
|
||||
format(str(self.presets)))
|
||||
|
||||
self.sync_server_thread = SyncServerThread(self)
|
||||
|
||||
self.active_site = self.presets["active_site"]
|
||||
self.remote_site = self.presets["remote_site"]
|
||||
|
||||
# try to activate providers, need to have valid credentials
|
||||
self.active_sites = []
|
||||
for provider in lib.factory.providers.keys():
|
||||
for site in lib.factory.providers[provider][0].get_presets().\
|
||||
keys():
|
||||
handler = lib.factory.get_provider(provider, site)
|
||||
if handler.is_active():
|
||||
self.active_sites.append((provider, site))
|
||||
|
||||
@property
|
||||
def active_site(self):
|
||||
"""
|
||||
|
|
@ -166,7 +166,7 @@ class SyncServer():
|
|||
"""
|
||||
return self.connection.database.collection_names(False)
|
||||
|
||||
@timeit
|
||||
@time_function
|
||||
def get_sync_representations(self, collection, active_site, remote_site):
|
||||
"""
|
||||
Get representations that should be synced, these could be
|
||||
|
|
|
|||
24
pype/modules/sync_server/utils.py
Normal file
24
pype/modules/sync_server/utils.py
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
import time
|
||||
from pype.api import Logger
|
||||
log = Logger().get_logger("SyncServer")
|
||||
|
||||
|
||||
def time_function(method):
|
||||
""" Decorator to print how much time function took.
|
||||
For debugging.
|
||||
Depends on presence of 'log' object
|
||||
"""
|
||||
|
||||
def timed(*args, **kw):
|
||||
ts = time.time()
|
||||
result = method(*args, **kw)
|
||||
te = time.time()
|
||||
if 'log_time' in kw:
|
||||
name = kw.get('log_name', method.__name__.upper())
|
||||
kw['log_time'][name] = int((te - ts) * 1000)
|
||||
else:
|
||||
log.debug('%r %2.2f ms' % (method.__name__, (te - ts) * 1000))
|
||||
print('%r %2.2f ms' % (method.__name__, (te - ts) * 1000))
|
||||
return result
|
||||
|
||||
return timed
|
||||
Loading…
Add table
Add a link
Reference in a new issue