开发web应用程序的实用工具

holger-utils的Python项目详细描述


霍尔格实用工具

哨兵

settings.py

fromholgerimportsentry...SENTRY_KEY='<your sentry key>'SENTRY_ORGANIZATION='<your sentry organization name>'SENTRY_PROJECT='<your sentry project name>'SENTRY_ALLOWED_ALL='if true all status captured'# default FalseSENTRY_ALLOWED_STATUS='list of status that should capture'# default []sentry.init()

或者

^{pr2}$

弹性搜索

settings.py

ELASTIC_PROTOCOL='<http or https>'# default 'http'ELASTIC_HOST='<host that elastic run>'# default 'localhost'ELASTIC_PORT='<listen port>'# default 9200ELASTIC_USE_SSL=''# default FalseTIME_ZONE='<elastic timezone>'# default 'UTC'ELASTIC_ALLOWED_STATUS=['<allowed status>']# default []ELASTIC_USER='<elastic username>'# default ''ELASTIC_PASSWORD='<elastic secret>'# default ''

火基

settings.py

FIREBASE_APP_OPTIONS='<app dict options>'# default {}FIREBASE_APP_NAME='your app name'# default 'FIRESTORE_DEFAULT'

日志

for use log, you must config elastic search and sentry before

JWT身份验证

在你的根上网址.py文件(或任何其他url配置), 包括霍尔格的路线™s TokenObtainPairView和TokenRefreshView视图:

fromdjango.urlsimportpathfromholger.rest.authorizationimport(HolgerTokenObtainPairView,HolgerRefreshView)urlpatterns=[...,path('apiv1/accounts/token/',HolgerTokenObtainPairView.as_view(),name='token_obtain_pair'),path('apiv1/accounts/refresh/',HolgerRefreshView.as_view(),name='token_refresh'),...]

设置

一些霍尔格欧元™的身份验证行为可以是 通过中的设置变量自定义设置.py在

fromdatetimeimporttimedeltaSIMPLE_JWT={'ACCESS_TOKEN_LIFETIME':timedelta(minutes=5),'REFRESH_TOKEN_LIFETIME':timedelta(days=1),'ROTATE_REFRESH_TOKENS':False,'BLACKLIST_AFTER_ROTATION':True,'ALGORITHM':'HS256','SIGNING_KEY':SECRET_KEY,'VERIFYING_KEY':None,'AUDIENCE':None,'ISSUER':None,'AUTH_HEADER_TYPES':('Bearer',),'USER_ID_FIELD':'id','USER_ID_CLAIM':'user_id','AUTH_TOKEN_CLASSES':('Holger.rest.authorization.AccessToken',),'TOKEN_TYPE_CLAIM':'token_type','JTI_CLAIM':'jti','SLIDING_TOKEN_REFRESH_EXP_CLAIM':'refresh_exp','SLIDING_TOKEN_LIFETIME':timedelta(minutes=5),'SLIDING_TOKEN_REFRESH_LIFETIME':timedelta(days=1),}

数据库副本路由器

使用database.router.ReplicaRouter时,所有读取查询都将转到副本 数据库;所有插入、更新和删除都将对default执行操作 数据库。 {cd3>定义你的第一个设置。它应该是 可在DATABASES中找到的数据库别名:

DATABASES={'default':{...},'replica-1':{...},'replica-2':{...},}REPLICA_DATABASES=['replica-1','replica-2']

然后将database.router.ReplicaRouter放入数据库路由器:

DATABASE_ROUTERS=('database.router.ReplicaRouter',)

副本数据库将以循环方式选择。 如果要连接到应用程序中的副本,请使用database.router.ReplicaRouter

fromdjango.dbimportconnectionsfromholger.databaseimportrouterconnection=connections[router.get_replica()]

数据库PinningReplicaRouter

在某些应用程序中,主数据库接收到 写操作及其对副本的复制足以导致不一致 对于最终用户。例如,假设有1秒的复制延迟。 如果一个用户在论坛上发了一篇帖子(到主论坛),然后被重定向 在500毫秒后(从复制副本)到它的完全渲染视图,视图将失败。 如果这是应用程序中的问题,请考虑使用multidb.PinningReplicaRouter。 此路由器与multidb.middleware.PinningRouterMiddleware结合使用 为了确保在写入default数据库后,future将从相同的数据库中读取 在可配置的时间长度内,用户代理被定向到default数据库。在

PinningRouterMiddleware主要按请求类型标识数据库写入, 假设使用HTTP方法的请求不是GETTRACEHEAD或{} 是写的。您可以使用 holger.database.router.db_write装饰器。这将导致同样的结果 好像请求是,例如,POST。在

要使用PinningReplicaRouter,请将其放入设置中的DATABASE_ROUTERS

DATABASE_ROUTERS=('database.router.PinningReplicaRouter',)

然后,安装中间件。它必须在任何其他中间件之前列出 执行数据库写入:

MIDDLEWARE_CLASSES=('multidb.middleware.PinningRouterMiddleware',...moremiddlewarehere...)

PinningRouterMiddleware将cookie附加到刚刚写入的任何用户代理。 cookie应设置为比复制延迟更长的时间过期。 默认情况下,它的值是保守的15秒,但可以按如下方式进行调整:

HOLGER_PINNING_SECONDS=5

如果需要更改cookie的名称,请使用HOLGER_PINNING_COOKIE设置:

HOLGER_PINNING_COOKIE='holger_pin_writes'

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

推荐PyPI第三方库


热门话题
并行处理java。util。同时发生的叉子在游泳池里。常见的并行性准则,用于选择正确的并行度大小   java如何将空白字符追加到指定长度?   安卓应用程序中出现错误,SSLHandshakeException,找不到证书路径的信任锚点   java如何使用JUnit Mockito验证检查方法是否未被调用   java如何使用不同的@RequestMapping解析多个控制器中的静态页面   Selenium中的javascript需要验证搜索结果   访问数据库SQLiteopenHelper方法时java应用程序崩溃(nullpointerexception)   在二叉树中验证最小堆时出现java空指针异常   Java 7的SSL连接失败   java用RestEasyWebTarget替换ProxyFactory不起作用   在Java应用程序中单击“否”按钮后,数组程序冻结(无响应)   数组中的前缀Java初学者前进和   Java HTML解析器,包括脚本标记和LineNumberReader   在java中为长类型数字加前导零   正则表达式无法映射正则表达式java。lang.IllegalArgumentException:模式段中捕获组的数量