Skip to content

A lightweight management system for applying and releasing exclusive resources.

License

Notifications You must be signed in to change notification settings

qige96/reskeeper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Reskeeper

version docs

A lightweight management system for applying and releasing exclusive resources.

Introduction

Considering these scenarios: you are doing web scrapping that requires proxies with multi-threads, and each thread can only use one proxy and one proxy can only be used by one thread at one time; or you are doing monkey tests for login process of your several applications simultaneously, each application can only use one test account and each account can only be used by one application at one time. You will need to manage the applying and releasing of these exclusive resources, and here is this little system that can help.

Installation

You can install it by just one command

pip install reskeeper

or

git install git+https://github.com/qige96/reskeeper.git

Quick Start

from reskeeper import ResourceKeeper

resources = [
    "resource1", 
    "resource2",
]

rk = ResourceKeeper()     # create a resource keeper instance
rk.load(resources)        # load a batch of data

res1 = rk.get()           # get a resource
res2 = rk.get()           # get one more resource
res3 = rk.get()           # None, no resource available

print(res1)               # <res_id: 1>
print(res2.res_id, 
        res2.data)        # (2, "resource2")
print(res3)               # None    

rk.release(res1)          # release a resource

res4 = rk.get()           # one resource available

print(res4.to_dict())     # {'res_id': 1, 'data': 'resource1'}

Documentation

see https://reskeeper.readthedocs.io

About

A lightweight management system for applying and releasing exclusive resources.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages