跳转到主要内容

基于Crossbar.io和Django实现模拟的Python库。

项目描述

简化模型服务

基于Crossbar.io和Django实现模拟的Python库。

Build Status

安装

Django 2.2

$ pip install simpl-modelservice

Django 1.11

$ pip install "simpl-modelservice<0.8.0"

设置开发环境

$ git clone git@github.com:simplworld/simpl-modelservice.git
$ cd simpl-modelservice
$ mkvirtualenv simpl-modelservice
$ pip install -r dev-requirements.txt
$ pip install -e .

运行测试

$ python runtests.py

开发版本控制

安装bumpversion

$ pip install bumpversion

然后,要发布新版本,使用以下命令增加版本号

$ bumpversion patch

然后推送到仓库

$ git push && git push --tags

查看当前WAMP订阅和注册

将您的浏览器指向http://localhost:8080/monitor并打开您的javascript控制台

如何作为两个独立进程运行modelservice

有时将crossbar和您自己的模型代码作为独立进程运行很有用。默认情况下,run_modelservice会运行配置为启动子进程run_guest的crossbar。您可以通过以下三个简单步骤更改此设置

  1. 通过运行./manage.py run_modelservice --print-config来获取当前正在使用的交叉栏配置。这将打印生成的配置文件,然后正常运行。只需剪切粘贴配置,它将是一个大型的JSON对象,位于通常的交叉栏日志消息之前。

  2. 编辑配置以删除整个{"type": "guest", ...}部分,并保存到文件中。

  3. 单独运行每个部分。如果我们把配置保存到当前目录下的config.json,它看起来会像这样

     ./manage.py run_modelservice --config=./config.json --loglevel info --settings=simpl-calc.settings
    

    对于交叉栏服务,然后

     HOSTNAME=localhost PORT=8080 ./manage.py run_guest --settings=simpl-calc.settings
    

    对于模型服务本身。

环境变量

  • GUEST_LOGLEVEL调整客人进程的日志记录,默认为info
  • CROSSBAR_LOGLEVEL调整交叉栏进程的日志记录,默认为info

性能分析

编写任务

性能分析器将对以profile_开头的方法进行多次运行,以不同的工人数量。

请注意,与单元测试不同,性能分析任务不是隔离的。

测量

modelservice.utils.instruments包含用于测量执行时间的类。请查看模块的文档字符串以获取详细信息。

收集结果

您可以通过调用.publish_stat()方法来收集任务的结果

    async def profile_random(self):
        with Timer() as timer:
            some_value = random.random()
        self.publish_stat('<unique stat name>', timer.elapsed, fmt='Average result was {stats.mean:.3f}')

fmt字符串将接收一个名为statsinstruments.StatAggregator实例。此对象将收集运行任务的所有工人的值,并将提供以下属性

  • .min:收集到的最低值
  • .max:收集到的最高值
  • .total:收集值的总和
  • .count:收集值的数量

此外,来自statistics模块的函数作为属性别名(例如:.mean.stdev等)。

匿名运行性能分析器

  1. 运行simpl-games-api服务器。
  2. 从模型服务目录,运行其服务器。
  3. 从相同的模型服务目录,调用profile.sh。您可以使用profile.sh -h来查看选项列表。

一些匿名性能分析任务的示例定义在modelservice/profiles中。除非您使用-m选项指定不同的模块路径,否则这些任务将运行。

在登录AWS实例时,从模型服务目录运行,请调用aws_profile.sh。您可以使用aws_profile.sh -h来查看选项列表。

使用用户运行性能分析器

您可以有发布和调用WAMP的工人作为特定用户。使用.call().publish()方法,它可以以与该工人关联的用户身份调用或发布。

您可以通过传递包含他们电子邮件的文件使用-u选项来让性能分析器以特定用户启动工人。

您还需要使用-m选项来指定您的任务模块路径(例如my_task_module_path)。

假设您有一个名为myusers.txt的文件,内容如下

s1@mysim.edu
s2@mysim.edu
s3@mysim.edu

然后您可以调用

$ profile.sh -m my_task_module_path -u myusers.txt

这将启动3个工人,每个工人都配置为以其中一个用户身份调用和发布。

在登录AWS实例时,从模型服务目录运行,请调用

$ aws_profile.sh -m my_task_module_path -u myusers.txt

profile.shaws_profile.sh都调用了profile管理命令。

版权 © 2018 宾夕法尼亚大学沃顿商学院

本程序是免费软件;您可以在自由软件基金会发布的GNU通用公共许可证的条款下重新分发和/或修改它;许可证的第2版,或(根据您的选择)任何后来的版本。

本程序分发的目的是希望它能有所用,但没有任何保证;甚至没有关于其商业性或特定用途适用性的暗示性保证。有关更多信息,请参阅GNU通用公共许可证。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

simpl-modelservice-0.10.1.tar.gz (144.2 kB 查看哈希值)

上传时间

构建分布

simpl_modelservice-0.10.1-py3-none-any.whl (160.1 kB 查看哈希值)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面