mirror of
https://github.com/YunoHost-Apps/seafile_ynh.git
synced 2024-09-03 20:26:01 +02:00
35 lines
838 B
Python
35 lines
838 B
Python
from ccnet.sync_client import SyncClient
|
|
import Queue
|
|
|
|
class ClientPool(object):
|
|
"""ccnet client pool."""
|
|
|
|
def __init__(self, conf_dir, pool_size=5):
|
|
"""
|
|
:param conf_dir: the ccnet configuration directory
|
|
:param pool_size:
|
|
"""
|
|
self.conf_dir = conf_dir
|
|
self.pool_size = pool_size
|
|
self._pool = Queue.Queue(pool_size)
|
|
|
|
def _create_client(self):
|
|
client = SyncClient(self.conf_dir)
|
|
client.req_ids = {}
|
|
client.connect_daemon()
|
|
|
|
return client
|
|
|
|
def get_client(self):
|
|
try:
|
|
client = self._pool.get(False)
|
|
except:
|
|
client = self._create_client()
|
|
return client
|
|
|
|
def return_client(self, client):
|
|
try:
|
|
self._pool.put(client, False)
|
|
except Queue.Full:
|
|
pass
|
|
|