Django的异步Redis后端!

django-asyncio-redis的Python项目详细描述


#django asyncio redis
[![构建状态](https://travis-ci.org/mackeyja92/django-asyncio-redis.svg?branch=master)(https://travis ci.org/mackeyja92/django asyncio redis)

django的“aioredis”后端。我正在生产中使用它,但您可能不想这样做:api相当稳定,但将来可能会发生变化。



<35<35<35<
``python

views.py
>django.core.cache从django.http从django.http导入httpresponse








val=wawait acache.get('test-key')

returnhttpresponse(val)


使用上下文管理器异步定义我的视图(请求):
使用await acache.lock('my-lock-key',timeout=0)作为锁进行异步:
如果未锁定,则获取:
返回httpresponse('could not get lock',状态=400)
data=do_locked_processing();保持锁定直到完全完成
返回httpresponse(data)


async def my_view_with_context_manager_timed(请求):
async with awit acache.lock('my-lock-key',超时=10)作为锁:
如果未锁定,则获取:
返回httpresponse('无法获取锁,状态=400)
data=do_locked_processing();保持锁10秒,否则,如果await lock.is_locked:在长时间处理后检查锁
执行更多处理(数据)
返回httpresponse(数据)
`````

它将使用“hiredis”和连接池。
Hiredis是首选后端,因为它速度非常快。


`` python
settings.py
import os


caches={
“default”:{},保留默认设置,保留非异步django访问的方式。
“async”:{
“backend”:“django asyncio redis.cache.asyncrediscache”,
“location”:os.environ.get('redis\location',”redis://127.0.0.1:6379?db=1“,
”poolsize“:5,
”timeout“:1200,
}
}

````


*指定为'redis://host:port',可选'?db=x`指定数据库。
*`poolsize`
*可选。默认值:10。如果设置为none,将创建单个连接而不是池。
*`loop`
*可选。默认为“无”。
*要在其上运行所有操作的IO循环。如果未提供循环,则在需要
时将调用“asycnio.get_event_loop()”。clint是惰性设置的,因此在第一次访问缓存之前不会发生这种情况。
*`timeout`
*可选。默认值300。
*指定默认缓存过期时间。用于“set”类型操作。
*“serializer”
*可选。默认值“django_asyncio_redis.serializers.pickle.pickle serializer`
*确定如何对数据进行编码以传输到redis。
*`compressor`
*可选。默认值“django_asyncio_redis.compressors.identity.identitycompressor`
*确定在传输到redis之前如何压缩数据。
*`options`
*可选。默认值{}
*如果使用pickle序列化程序,则可以指定要用作整数的“pickle\u版本”。



\notes
-基于https://github.com/joanvila/aioredlock的锁定实现
-基于https://github.com/niwinz/django redis的序列化程序/压缩器
-尚未使用多个redis对其进行测试服务器。
-欢迎贡献





《发行说明




353535;;;;;;;;;合一编码器`TO` django_asyncio_redis.serializers.json.jsonserializer`

\/>-增加了压缩支持
-增加了lzma和zlib压缩程序
-默认为无压缩

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java多项式逆算法   特定于java的ID不接受RestFB for Facebook中的我的访问令牌   单线程java中的多线程多可运行   java为什么即使在添加setJMenubar()方法后,Jmenubar在我的Jframe中也不可见?   当字段为LOB时,java无法从字符串转换为Long类型   java内存与同步互斥不一致   如何在Java中以位级精度读写文件   rest如何在java中对jersey客户端使用SSL客户端证书   在安卓 emulator中访问google api时发生java运行时错误   在Java中,如何确定一个日期是否介于两个日期之间?   运行简单spring应用程序时出现java错误   运行java jar和java cp时,spring boot没有主清单属性错误