Skip to main content

An asynchronous qiniu cloud storage sdk for tornado

Project description

https://img.shields.io/github/license/mashape/apistatus.svg

Installation

$ python3.x setup.py install

or

$ pip3.x install tornado_qiniu

Environment

tornado_qiniu version python version
1.0 3.4,3.5

Quick Start

Resource Upload and Download

from tornado import gen,ioloop
from tornado_qiniu import QiniuClient

access_key = "your qiniu access key"
secret_key = "your qiniu secret key"
bucket_name = "your bucket name"
domain = "your domain"
bucket_acp = 0   #bucket access property,1 ===>private bucket,0===>public bucket

client = QiniuClient(access_key, secret_key, domain)
loop = ioloop.IOLoop.current()

#get a bucket instance
bucket = client.bucket(bucket_name, bucket_acp=1)

#get bucket upload token
bucket.upload_token()

# get resource url
bucket.res("resource_key").url()
bucket.res('key1','key2').url()

# download resource
@gen.coroutine
def get_resource():
    response = yield bucket.res("resource_key").get() #return   saved name
    # get multi resource
    response = yield bucket.res('key1','key2').get()  #return a list of the  saved  name
loop.run_sync(get_resource)

# upload resource
@gen.coroutine
def upload():
    #when file's size greater than 4MB,using shard uploading
    #after uploading successfully,return key name and file hash value
    response = yield bucket.res("key").put("./testfile") #return resource hash value,and key

loop.run_sync(upload)
loop.close()

Resource Management

from tornado import gen,ioloop
from tornado_qiniu import QiniuClient

access_key = "your qiniu access key"
secret_key = "your qiniu secret key"
bucket_name = "your bucket name"
domain="your domain"
bucket_acp = 0   #bucket access property,1 ===>private bucket,0===>public bucket

client = QiniuClient(access_key,secret_key,domain)
bucket = client.bucket(bucket_name,bucket_acp=bucket_acp)
loop = ioloop.IOLoop.current()

#single resource management
@gen.coroutine
def single_resource_manage():
    #resource state
    state = yield bucket.res('key').stat()

    #resource deleting
    yield bucket.res('key').delete()

    #resource moving
    yield bucket.res('src_key').moveto('dest_key', 'dest_bucket')

    #resource coping
    yield bucket.res('src_key').copyto('dest_key', 'dest_bucket')
loop.run_sync(single_resource_manage)

#multi resource management
@gen.coroutine
def multi_resource_manage():
    #multi resource state
    state = yield bucket.res('key1', 'key2', 'key3').multi_stat()

    #multi resource deleting
    yield bucket.res('key1', 'key2', 'key3').multi_delete()

    #multi resource coping
    yield bucket.res(*['key1', 'key2']).multi_copyto(['dest_key1', 'dest_key2'],'dest_bucket')

    #multi resource moving
    yield bucket.res('key1', 'key2').multi_moveto(['dest_key1', 'dest_key2'],'dest_bucket')
loop.run_sync(multi_resource_manage)

# resource management batch operation
@gen.coroutine
def batch_ops():
    #get batch instance
    batch = bucket.res().batch()
    batch.stat('keyname1')
    batch.delete('keyname2')
    #execute batch
    yield batch.execute()

    #multi resource batch operation
    batch = bucket.res('key1', 'key2').batch()
    batch.multi_stat()
    batch.multi_copy(['dest_key1', 'dest_key2'], 'dest_bucket')
    batch.multi_move(['dest_key1', 'dest_key2'], 'dest_bucket')

    #list all resources in current bucket
    batch.list()
    #execute batch ,return json format data
    yield bacth.execute()
loop.run_sync(batch_ops)

Resource Process

from tornado import gen,ioloop
from tornado_qiniu import QiniuClient

access_key = "your qiniu access key"
secret_key = "your qiniu secret key"
bucket_name = "your bucket name"
domain="your domain"
bucket_acp = 0   #bucket access property,1 ===>private bucket,0===>public bucket

client = QiniuClient(access_key,secret_key,domain)
bucket = client.bucket(bucket_name,bucket_acp=bucket_acp)
loop = ioloop.IOLoop.current()

# get resource info
@gen.coroutine
def get_info():

    # get image info
    imginfo = yield bucket.res("dummy_img_key").imageinfo().get()

    # get image ave
    imgave = yield bucket.res("dummy_img_key").imageave().get()

    # get image exif
    imgexif = yield bucket.res("dummy_img_key").imageexif().get()

loop.run_sync(get_info)

# resource fops
@gen.coroutine
def resource_fops():
    # resource qrcode url
    qrcodeurl = bucket.res("dummy_img_key").fops().qrcode().url()

    # get resource qrcode img
    qrcodeimg = yield bucket.res("dummy_img_key").fops().qrcode().get()

    # resource text_watermark
    text_watermark_url = bucket.res("dummy_img_key").fops().text_watermark("dummy").url()
    text_watermark_img = yield bucket.res("dummy_img_key").fops().text_watermark("dummy").get()

    #  resource image watermark
    img_url = bucket.res("water_img").url()
    watered_img_url = bucket.res("dummy_img_key").fops().image_watermark(img_url).url()
    waterd_img = yield bucket.res("dummy_img_key").fops().image_watermark(img_url).get()

    # resource fops saveas
    saveas_url = bucket.res("dummy_key").fops().text_watermark("dummy").saveas("dummy_watermark").url()
    yield bucket.res("dummy_key").fops().text_watermark("dummy").saveas("dummy_watermark").get()

    # resource fops persistent

    # audio/vedio slice operation, the detail args refer to:
    # http://developer.qiniu.com/code/v6/api/dora-api/av/segtime.html

    yield bucket.res("dummy_av").fops().avthumb_slice(no_domain=1).persistent()

    # audio/vedio transcoding operation,the detail args refer to:
    # http://developer.qiniu.com/code/v6/api/dora-api/av/avthumb.html
    yield bucket.res("dummy_av").fops().avthumb_transcoding("mp3").persistent()

    # audio/vedio concat operation,the detail args refer to :
    # http://developer.qiniu.com/code/v6/api/dora-api/av/avconcat.html
    yield bucket.res("dummy_av").fops().avconcat(mode=2, frmt="mp4", url1="http://**",url2="http://**").persistent()

    # audio/vedio vframe operation ,the detail args refer to:
    # http://developer.qiniu.com/code/v6/api/dora-api/av/vframe.html
    yield bucket.res("dummy_av").fops().vframe("jpg", 200, w=1000, h=3030).persistent()

    # get audio/vedio information
    avinfo = yield bucket.res("dummy_av").avinfo().get()
    avinfo_url = bucket.res("dummy_av").avinfo().url()

    # prefop interface
    response = yield bucket.res("key1").prefop("persistent_id")

License

MIT License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for tornado_qiniu, version 1.2
Filename, size File type Python version Upload date Hashes
Filename, size tornado_qiniu-1.2.tar.gz (18.3 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page