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。lang.ClassCastException。如何删除?   JScrollPane中JTextArea上的java滚动条不起作用   java解析字符串到日期对象更改值   加载多个资源log4j的java问题。性质   java实例化类<?>变量   java Liferay,如何获取根记录器?   java如何在Android中使用多个带有Tab片段的按钮?   是否有支持条件格式的Java轻量级模板解决方案?   java拖放ListView行   java在方法之前插入return会导致VerifyError而不显示消息   通过在JAVA中传递组名从Active Directory获取电子邮件地址   java Eclipse对自定义facelets标记的支持   通过拖动鼠标滚动JScrollPane(Java swing)   使用自定义包结构(Maven)的java访问资源文件夹   java如何初始化spring jar和starter文件?   enums Java:具有@Enumerated(字符串),但仍然获得ClassCastException   java我可以使用注释在注释后调用方法吗?   java为什么程序不能传递这些断言?