用于二氧化碳数据记录的简单http服务器

co2logserver的Python项目详细描述


co2logserver python包

BuildDocumentationCoveragePyPi

这个包提供了一个简单的服务器来记录数据。

文档

您可以找到这个包here on on Gitlab的详细文档。

本地安装

通过pip

# local user library under ~/.local
pip3 install --user .
# also install msgpack support
pip3 install --user '.[msgpack]'# also install OpenSenseMap support
pip3 install --user '.[opensensemap]'

运行

开发

要在开发模式下运行服务器,请在安装后运行:

python3 -m co2logserver

您可能需要添加选项-v -t -d

生产

要在生产环境中运行服务器,请使用gunicorn wsgi服务器例如:

pip3 install --user gunicon
gunicorn co2logserver

配置

您始终可以通过 CO2LOGSERVER_CONFIG环境变量。查看文件 co2logserver/config_default.py用于默认设置。

数据管理

要将数据上载到服务器,您可以向 /upload路径:

Type^{}data example
JSON^{}^{}
CSV^{}^{}
FORM^{}^{}
MSGPACK^{}^{} (HEX)

新的数据列将自动添加到数据库中。每一列 名称转换为小写。

身份验证

如果要控制允许谁将数据上载到服务器,则 可以使用内置在 服务器。

设置CO2LOGSERVER_UPLOAD_REQUIRES_AUTH=True并指定一个或多个psk盐 字符串,例如CO2LOGSERVER_CHECKSUM_SALTS = ["my-super-secret-psk"]

默认情况下,服务器只接受包含至少一个头的请求 包含 发送的有效载荷,附带用hashAlgorithm计算的salt(例如md5, SHA1、SHA256等)。

例如,如果要上载json数据 {"time_utc":[43,23],"co2":[1223,2351]}你的盐串是 my-super-secret-psk,您的头字段Content-MD5-Saltedb71e91feb2be18ccca019914a1da5b1d这是 {"time_utc":[43,23],"co2":[1223,2351]}my-super-secret-psk

这是一种简单而有效的防止垃圾邮件上传的方法。

Security Note

Note, however, that communication to the server is still unencrypted (only HTTP, not HTTPS). The reason for this is that embedded devices like Arduinos do not have the capabilities for encrypted web traffic. Thus, the sent data including the checksums can theoretically be intercepted and reused to reupload the exact same dataset.

opensensemap上传

使用sensemapi packageco2logserver能够将上载的数据重定向到 OpenSenseMap。为了让它工作,一个opensensemap 帐户是必需的,其登录凭据在co2logserver中设置。 配置。默认配置从 环境变量SENSEMAP_EMAILSENSEMAP_USERNAMESENSEMAP_PASSWORD。还将中的CO2LOGSERVER_OSEM_UPLOAD设置为True。 配置还允许将上载的数据重定向到opensensemap。 config_default.py包含进一步定制的解释 选项。

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

推荐PyPI第三方库


热门话题
Android Java在活动之间传递值   java当实体中存在关系时,我可以只使用实体的id而不是从DB中获取实体吗?   bouncycastle Java运行SSHD服务器错误未找到类定义   java SWT/Swing>Threads n'Hell   java多线程数据库读取   java如何在Eclipse中轻松提交Git   java在哪里可以找到字符串相等比较的一组特定排序规则?   无连接表的java单向单域关系   java扩展三角文件   java spring。杰克逊。序列化。failonemptybeans   java无法加载请求的类:oracle。jdbc。驾驶员OracleDriver   java通过数组进行索引循环并打印出元素?   找不到eclipse错误类中的java提交Hadoop作业   Java:随机设定种子   java片段、异步任务和侦听器   java在分号后使用{}