一个python库,其中包含用于aether的有用django工具
aether.sdk的Python项目详细描述
Aether django sdk库
此库包含不同Aether Django模块使用的最常见功能。
目录
要求
此库需要Python3.6及更高版本。
python库:
- django作为web框架。(高于2)
- django-cors标题 用于处理跨源资源共享(CORS)所需的服务器头。
- django调试工具栏 显示当前请求/响应的各种调试信息的一组可配置面板。
- django-prometheus 使用prometheus.io来监视应用程序。
- django丝绸 Django框架的实时剖面分析和检查工具。
- django-uwsgi 与django相关的uwsgi示例/技巧/模块。
- djangorestframework 一个强大而灵活的用于构建web api的工具包。(高于3.8)
- drf动态字段 动态选择每个drf资源的字段子集, 使用白名单或黑名单。
- psycopg2二进制文件 python postgresql数据库适配器。
- pygments 用python编写的语法突出显示包。
- python-json记录器 添加json日志格式化程序的python库。
- 请求 人类的http。
- uwsgi python web服务器网关接口。
额外依赖项(基于设置):
cas
- django-cas-ng django cas(中央身份验证服务)客户端。(高于3.6)
调度程序
服务器
- 哨兵软件开发包 用于哨兵的python客户端。
存储
- django minio存储器 Minio的Django存储驱动程序。
- django存储 Django的自定义存储后端集合。 为boto3启用 谷歌云存储
测试
网页包
- django webpack loader 与Django一起透明地使用Webpack。
安装
# standalone pip3 install aether.sdk # with extra dependencies pip3 install aether.sdk[cas,scheduler,server,storage,test,webpack]
分布
如何创建软件包分发版
执行以下命令:
python3 setup.py bdist_wheel
或
./scripts/build.sh
测试
如何测试库
首次安装依赖项(仅执行一次):
./scripts/install.sh
之后执行以下命令:
source ./venv/bin/activate
./scripts/test.sh
文件scripts/test.ini包含测试中使用的环境变量。
用法
快速启动
在settings.py
文件中添加此代码片段,以便构建django应用程序
基于环境变量的设置。
# if it's an aether modulefromaether.sdk.conf.settings_aetherimport*# noqa# if it's an external aether productfromaether.sdk.conf.settingsimport*# noqa# continue with the application specific settings# and re-import the settings variables you need to reuse# from aether.sdk.conf.settings[_aether] import WHATEVER YOU NEED TO...
在urls.py
文件中添加此代码片段以生成默认的urlpatterns
基于应用程序设置。
fromaether.sdk.conf.urlsimportgenerate_urlpatternsurlpatterns=generate_urlpatterns(token=[True|False],app=[# include here the application/module specific URLs])
默认网址包括:
健康端点:
/health
URL。始终以200
状态和空内容响应。 使用aether.sdk.health.views.health
视图。/check db
URL。如果数据库不可用,则用500
状态响应。 使用aether.sdk.health.views.check\db
视图。/check应用程序的url。使用当前应用程序版本及更多响应。 使用
aether.sdk.health.views.check_app
视图。
/admin
部分URL(管理URL
设置)。/admin/~prometheus/metrics
url。显示原始监控数据。/admin/~uwsgi/
URL。如果uwsgi正在运行,则显示服务器uwsgi设置。/accounts
url(auth_url
设置)检查rest框架是否, 使用登录模板和
注销模板中指示的模板 设置,或keypolt/cas设置。
基于参数:
标记
:指示应用程序是否应能够创建并返回 用户通过post请求令牌并激活url。 url端点在标记url
设置中指示。 默认为/token
。 使用aether.sdk.auth.views.auth_令牌
视图。如果当前用户不是管理员用户,则创建并返回授权 为自己创建令牌,否则为包含的
用户名
创建令牌 在请求有效载荷中。
基于应用程序设置:
f
调试
已启用:调试工具栏
URL。
如果设置了
profiling\u enabled
:/admin/~silk/
URL。显示分析数据。
如果设置了外部应用程序并有效:
/check app/{name}
url。检查是否可以访问外部应用程序 使用设置中指示的URL和令牌。 使用aether.sdk.health.views.check_external
视图。 对于/check app/app name
检查外部应用程序服务器是否app name
可通过提供的环境变量app\u name\u url访问 以及应用程序名称令牌
可能的回答:
500
-永远要看到生活的光明面!!!!
200
-由Ehealth Africa为您带来-适合艰苦环境的良好技术
/check标记的url。如果 无法使用设置中指示的URL访问外部应用程序 以及链接的当前用户令牌。 使用
aether.sdk.health.views.health
视图和aether.sdk.auth.app token.decorators.app_token是必需的
decorator。/check user tokens
url(check_token_url
设置)。显示外部 当前用户的应用程序令牌。 使用aether.sdk.auth.app token.views.user\u app\u token查看 模板
eha/tokens.html
如果
app_url
设置不同于/
,则所有 端点类似于:/{app url}/{endpoint}
如果启用网关为
真
:应用程序终结点也可以通过带前缀的正则表达式访问。 包括此应用程序的领域值和网关ID。
url模式如下:
/{app url}/{current realm}/{gateway id}/{endpoint}
授权和管理端点从不依赖于任何领域,因此url 始终使用公共领域。
例如:
/{app url}/{public realm}/{gateway id}/帐户
和/{app url}/{public realm}/{gateway id}/admin
环境变量
以下环境变量用于构建应用程序django设置。 查看django设置
查看aether/sdk/conf.settings.py
文件以检查所有
预期的环境变量。
特定于应用程序
应用程序链接
:https://www.ehealthafrica.org
。出现在DRF网页中的链接。应用程序名称
:eha
。网页中显示的应用程序名称。app_name_html
:应用程序名称的HTML表达式。
默认为应用程序名称。应用程序模块
:引用要包含的此应用程序的django模块
在已安装的应用程序列表中。app_favicon
:eha/images/eha icon.svg
。应用程序favicon。应用程序徽标
:eha/images/eha icon.svg
。应用程序徽标。应用程序URL
:/
。服务器中的应用程序URL。
如果主机是http://my server,应用程序url是/my module
,
应用程序enpoints可以在http://my server/my module/{endpoint}
应用程序链接
:https://www.ehealthafrica.org
。出现在DRF网页中的链接。应用程序名称
:eha
。网页中显示的应用程序名称。app_name_html
:应用程序名称的HTML表达式。
默认为应用程序名称。应用程序模块
:引用要包含的此应用程序的django模块
在已安装的应用程序列表中。app_favicon
:eha/images/eha icon.svg
。应用程序favicon。应用程序徽标
:eha/images/eha icon.svg
。应用程序徽标。应用程序URL
:/
。服务器中的应用程序URL。
如果主机是http://my server,应用程序url是/my module
,
应用程序enpoints可以在http://my server/my module/{endpoint}
通用
调试
:启用调试模式。如果未设置或设置为空字符串, 任何其他都被视为true
测试
:指示应用程序是否在测试条件下执行。 是false
如果未设置或设置为空字符串,则任何其他内容都将被视为true
日志格式化程序
:json
。应用程序消息格式。 可能值:verbose
或json
日志记录级别
:信息
。应用程序消息的日志记录级别。 https://docs.python.org/3.7/library/logging.html"levels哨兵DSN
:哨兵DSN(错误报告工具)。 https://docs.sentry.io美化的切割
:10000
。指示经过修饰的json值的最大长度。 请参见:aether.sdk.utils.json修饰(value,indent=2)
方法。
django
django_secret_key
:此安装的django secret key(必需的)。 https://docs.djangoproject.com/en/2.2/ref/settings/褵std:setting-secret戥key语言代码
:英语
。此安装的语言代码。 https://docs.djangoproject.com/en/2.2/ref/settings/"语言代码时区
:UTC
。此安装的时区。 https://docs.djangoproject.com/en/2.2/ref/settings/std:setting-time-zone静态URL
:/static/
。为要从中提供服务的静态资产提供基本URL。静态根目录
:/var/www/static/
。为要从中提供服务的静态资产提供本地文件夹。
django rest框架(drf)
页面大小
:10
。rest api的默认页面大小。最大页面大小
:5000
。rest api的最大页面大小。html_选择u截止
:100
。rest api表单选择字段的选项大小。
数据库
有关详细信息,请访问https://docs.djangoproject.com/en/2.2/ref/settings/databases" rel="nofollow">https://docs.djangoproject.com/en/2.2/ref/settings/databases
pghost
:postgres主机名(必需的)。pgport
:Postgres端口(必需的)。数据库名称
:Postgres数据库名称(必需的)。pguser
:Postgres用户(必需的)。pgpassword
:Postgres用户密码(必需的)。db_conn_max_age
:数据库连接的生存期,以秒为单位。
终点
管理员URL
:管理员
。管理部分终结点。验证URL
:帐户
。授权终结点(登录和注销URL)登录url
,/{auth\u url}/login
。登录URL。令牌URL
:令牌
。获取授权令牌终结点。检查令牌URL
:检查用户令牌
。检查授权令牌终结点。
模板
登录模板
:eha/login.html
。登录页中使用的模板。已注销模板
:eha/logged戋out.html
。已注销页中使用的模板。drf_api_renderer_template
:eha/api.html
。用于DRF可浏览的模板 API渲染器页面。drf_管理nderer_模板
:eha/admin.html
。DRF API中使用的模板 管理渲染器页面。keypolt_template
:eha/login_realm.html
。登录步骤中使用的模板 若要获取域并重定向到keypolt登录页。keypolt_behind_template
:eha/login_keypolt.html
。中使用的模板 在后台启用keypolt时的登录页。
分析
分析启用
:用于指示分析工具(silk)是否启用。 是false
如果未设置或设置为空字符串,则任何其他内容都将被视为true
silky_python_profiler
。用于指示是否使用python的内置cprofile分析器。 是false
如果未设置或设置为空字符串,则任何其他内容都将被视为true
silky_python_profiler_binary
。用于指示是否生成二进制文件。 是false
如果未设置或设置为空字符串,则任何其他内容都将被视为true
silky_python_profiler_result_path
:/tmp/
。本地目录,其中*.prof
文件已存储。丝滑的
。看看丝绸对请求/响应时间有什么影响。 是false
如果未设置或设置为空字符串,则任何其他内容都将被视为true
丝滑的最大请求车身尺寸
:-1
。如果请求体的大小(以字节为单位),silk将保存该请求体。 小于指示值。任何小于0的值意味着没有限制。
丝滑的最大响应体大小
:-1
。如果响应体的大小(以字节为单位),silk将保存它 小于指示值。任何小于0的值意味着没有限制。
silky_intercept_percent
:100
。指示记录的请求百分比。silky_max_录制的请求
:10000
。存储的请求/响应数。silky_max_recorded_requests_check_percent
:10
/admin/~silk/
url显示分析数据(仅限管理员用户访问)。
更多信息请参见https://github.com/jazzband/django-silk" rel="nofollow">https://github.com/jazzband/django silk
文件存储系统
需要存储
:用于指示是否需要文件存储系统。
是false
如果未设置或设置为空字符串,则任何其他内容都将被视为true
django_storage_backend
:用于指定
默认文件存储系统。
可用选项:minio
,s3
,gcs
需要存储
:用于指示是否需要文件存储系统。
是false
如果未设置或设置为空字符串,则任何其他内容都将被视为true
django_storage_backend
:用于指定
默认文件存储系统。
可用选项:minio
,s3
,gcs
有关详细信息,请访问https://django storages.readthedocs.io/en/latest/index.html
更多信息请参见https://django minio storage.readthedocs.io/en/latest/usage 如何在谷歌云存储上创建访问密钥
标准选项是通过令牌身份验证和基本身份验证登录
或者通过标准的django认证。 如果
您想使用keypoct作为身份验证服务器。
有两种方法可以设置keypolt: a)在这种情况下,身份验证过程发生在服务器端
任何进一步的用户交互。 b)在这种情况下,用户被重定向到keypolt服务器以完成
登录步骤。 更多信息,请参见keypolt 注意:如果验证服务器
是钥匙斗篷。 设置 在这种情况下,可以通过以下几种方式访问应用程序URL: 尝试访问运行状况终结点 对于那些不依赖于领域并且必须也可用的端点
"unprotected"我们还需要一个环境变量: 授权和管理端点从不依赖于任何领域,因此最终的url
始终使用公共领域。 如果需要,请设置 有关详细信息,请参阅django cas clientdjango cas client 注意:不能与keypolt同时启用cas选项。 技术实现在
多租户自述。
按照说明在应用程序中启用多租户选项关于 如果 如果启用了网关身份验证而不是使用给定的令牌,则
应用程序将使用提供的minio(
django_storage_backend=minio
)存储桶名称
:用作媒体文件夹的存储桶的名称(必需的)。迷你存储存取键
:迷你存取键。minio-secret存储密钥
:minio-secret访问密钥。minio_storage_endpoint
:minio服务器URL端点(无方案)。minio_storage_use_https
:是否使用TLS。确定方案。minio_storage_auto_create_media_bucket
:如果bucket不存在,是否创建它。minio_storage_media_use_pre signed
:确定是否应预先签署媒体文件URL。s3(
django_storage_backend=s3
)bucket_name
:要在s3上使用的bucket的名称(必需的)。在S3上必须是唯一的。AWS访问密钥ID
:您的S3帐户的AWS访问密钥。aws_secret_access_key
:您的s3帐户的aws secret access密钥。谷歌云存储(
django_storage_backend=gcs
)bucket_name
:要在地面军事系统上使用的bucket的名称(必需的)。
使用google cloud控制台创建bucket
并设置适当的权限。gs\u访问密钥id
:谷歌云访问密钥。gs_secret_access_key
:谷歌云密匙。调度程序
scheduler_required
:用于指示是否需要RQ平台。
是false
如果未设置或设置为空字符串,则任何其他内容都将被视为true
redis_主机
:redis主机名(必需的)。redis_端口
:redis端口(必需的)。redis_db
:redis数据库。默认为0
redis_密码
:redis密码(强制)。安全性
django允许的主机
:*
。设置允许的主机
django设置。
https://docs.djangoproject.com/en/2.2/ref/settings/allowed hostscsrf_cookie_domain
:.ehealthafrica.org
。设置csrf_cookie_domain
django设置。
https://docs.djangoproject.com/en/2.2/ref/settings/csrf cookie domaincsrf_trusted_origins
。设置csrf_trusted_origins
django设置。
https://docs.djangoproject.com/en/2.2/ref/settings/csrf trusted originsdjango_use_x_forwarded_host
:false
。设置使用x_转发的主机
django设置。
https://docs.djangoproject.com/en/2.2/ref/settings/use-x-forwarded-hostdjango_use_x_forwarded_port
:false
。设置使用x_转发的端口
django设置。
https://docs.djangoproject.com/en/2.2/ref/settings/use-x-forwarded-portdjango_http_x_forwarded_proto
:false
。如果存在,则设置secure_proxy_ssl_头
django设置为('http_x_forwarded_proto','https')
。
https://docs.djangoproject.com/en/2.2/ref/settings/std:setting-secure_proxy_ssl_header网页包
需要webpack
:用于指示资产是否通过webpack提供。
是false
如果未设置或设置为空字符串,则任何其他内容都将被视为true
webpack_stats_file
:{static_root}webpack stats.json
,表示文件路径
那个WebPACK用于为不同的资产提供服务。用户和身份验证
标准
密钥斗篷服务器
keypolt_client_id
(默认为eha
)是允许
要使用keycoplot rest api进行身份验证的乙醚模块。
必须将此客户端ID添加到以太模块使用的所有领域。
keypolt_server_url必须包含所有路径,直到显示领域为止,
通常直到/auth/realms
# .env fileKEYCLOAK_SERVER_URL=http://my-keycloak-server/auth/realmsKEYCLOAK_BEHIND_SCENES=true
# .env fileKEYCLOAK_SERVER_URL=http://my-keycloak-server/auth/realmsKEYCLOAK_BEHIND_SCENES=
网关身份验证
gateway_service_id
以使用keypolt启用网关身份验证。
这意味着身份验证由第三方系统处理
(例如kong)在每个请求中都包含json web
gateway_header_token
头中的令牌(jwt)(默认为x-oauth-token
)。
网关服务id表示网关服务。/health
:我的模块
网关服务id值)网关公共领域
:-
这表示不受保护的假领域
通过网关服务器。在这种情况下,身份验证由另一方处理
可用选项,即基本、令牌、CA…cas服务器
主机名
和cas_server_url
环境变量
激活应用程序中的cas集成。多租户
多租户
,启用或禁用该功能,如果未设置或设置,则为假
。
要清空字符串,任何其他内容都被视为true
默认领域
,eha
创建的艺术品的默认领域
当未启用多租户时。realm_cookie
,eha realm
保持当前cookie的名称
请求头中的租户ID。外部应用程序
外部应用程序
当前实例必须能够连接并与之交互。
对于每个值,都应该有相应的环境变量:
<;<;外部应用程序>;>;&u URL
:外部应用程序服务器URL(必需的)。<;<;外部应用程序gt;>;&u令牌
:外部应用程序授权令牌(强制)。<;<;外部应用程序>;>;&u url\u测试
:测试中使用的外部应用程序服务器url。
默认为外部应用程序服务器URL。<;<;外部应用程序>;>;&u令牌测试
:测试中使用的外部应用程序授权令牌。
默认为外部应用程序授权令牌。外部应用程序
等于app-1、mod-ule-2、pro-d-uct-3
必需的环境变量是:
app_1_url
,app_1_token
mod ule_2_url
,mod ule_2_令牌
pro_u uct_3_url
,pro_uct_3_令牌
gateway_header_token
值进行通信
尽可能使用外部应用程序。管理命令
检查是否可以通过命令行访问URL。
# standalone
pip3 install aether.sdk
# with extra dependencies
pip3 install aether.sdk[cas,scheduler,server,storage,test,webpack]
0
通过命令行创建"管理员"用户。
# standalone
pip3 install aether.sdk
# with extra dependencies
pip3 install aether.sdk[cas,scheduler,server,storage,test,webpack]
1
推荐PyPI第三方库