基于Crossbar.io和Django实现模拟的Python库。
项目描述
简化模型服务
基于Crossbar.io和Django实现模拟的Python库。
安装
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。您可以通过以下三个简单步骤更改此设置
-
通过运行
./manage.py run_modelservice --print-config
来获取当前正在使用的交叉栏配置。这将打印生成的配置文件,然后正常运行。只需剪切粘贴配置,它将是一个大型的JSON对象,位于通常的交叉栏日志消息之前。 -
编辑配置以删除整个
{"type": "guest", ...}
部分,并保存到文件中。 -
单独运行每个部分。如果我们把配置保存到当前目录下的
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
字符串将接收一个名为stats
的instruments.StatAggregator
实例。此对象将收集运行任务的所有工人的值,并将提供以下属性
.min
:收集到的最低值.max
:收集到的最高值.total
:收集值的总和.count
:收集值的数量
此外,来自statistics
模块的函数作为属性别名(例如:.mean
、.stdev
等)。
匿名运行性能分析器
- 运行
simpl-games-api
服务器。 - 从模型服务目录,运行其服务器。
- 从相同的模型服务目录,调用
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.sh
和aws_profile.sh
都调用了profile
管理命令。
版权 © 2018 宾夕法尼亚大学沃顿商学院
本程序是免费软件;您可以在自由软件基金会发布的GNU通用公共许可证的条款下重新分发和/或修改它;许可证的第2版,或(根据您的选择)任何后来的版本。
本程序分发的目的是希望它能有所用,但没有任何保证;甚至没有关于其商业性或特定用途适用性的暗示性保证。有关更多信息,请参阅GNU通用公共许可证。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。