如何在序列图中显示 goto 语句。
例如,在下图中,一旦“睡眠直到保留期”到期,我想将控制权交回“is_item_inventory_onhold_state(item_id)”语句。我怎样才能显示这是一个图表?
我正在使用https://sequencediagram.org/来创建这些图表。
为生成上图而编写的代码:
title Item Executor
loop for each item in a list
Client->ItemExecutor: execute(item)
ItemExecutor -> ItemStateService:is_item_inventory_onhold_state(item_id)
alt True - Item state is on hold
ItemStateService -->ItemExecutor: True
ItemExecutor ->ItemExecutor: sleep till hold period
goto ItemExecutor -> ItemStateService:is_item_inventory_onhold_state(item_id)
else False - Item is not in Held State
ItemStateService -->ItemExecutor:False
ItemExecutor ->ItemExecutor: do_something()
end
ItemExecutor ->Client : Acknowledge
end
Run Code Online (Sandbox Code Playgroud) 我在 Prometheus 中监控基于 Node JS 的 Web 应用程序时遇到以下错误。
level=warn ts=2019-08-02T18:23:48.658364708Z caller=scrape.go:932 component="抓取管理器" scrape_pool=batch_web target= https://example.com:443/metrics msg="摄取错误太旧或太遥远的样本” num_dropped=6
有任何关于为什么会发生这种情况以及我该如何解决这个问题的指示吗?
我有很多动物arr = ['cat','dog','elephant','lion','tiger','mouse']
我想编写一个remove(['dog','lion'])
可以从 arr 中删除元素的函数,我们可以使用 es6 spread 编写这个函数吗?
例子:
arr = ['cat','dog','elephant','lion','tiger','mouse']
remove(['cat', 'lion'])
Run Code Online (Sandbox Code Playgroud)
arr 应该更改为
arr = ['dog','elephant','tiger','mouse']
Run Code Online (Sandbox Code Playgroud)
注意:我不想要突变,所以请不要建议改变数组的解决方案。
在我的基于反应的单页面应用程序中,我的页面分为两个窗格.
左窗格:过滤面板.
右窗格:网格(包含通过应用过滤器的数据的表)
总之,我有一个看起来非常类似于amazon.com的应用程序.默认情况下,当用户在浏览器中点击应用程序的根端点(/)时,我会从服务器获取最近7天的数据并将其显示在网格中.
过滤器面板有几个过滤器(例如,时间过滤器用于获取落在指定时间间隔内的数据,ID用于搜索具有特定ID的数据等)以及附加在过滤器面板标题中的搜索按钮.点击搜索按钮通过在帖子表单体内提供选定的过滤器来对服务器进行调用,服务器返回匹配传递的过滤器的数据,并且我的前端应用程序显示从网格内的服务器返回的这些数据.
现在,当某人点击过滤器面板中的搜索按钮时,我想在URL的查询参数中反映所选过滤器,因为它可以帮助我与我网站的其他用户共享这些URL,以便他们可以看到我应用的过滤器和查看仅与这些过滤器匹配的网格内的数据.
这里的问题是,如果在搜索按钮上单击,我使用带有查询参数的http get,由于不同浏览器对URL长度的限制,我最终会破坏应用程序.
请建议我正确的解决方案来创建这样的URL,这将帮助我在过滤器面板中设置选定的过滤器,而不会在我的应用程序中造成任何副作用.
可能的解决方案:考虑到我们不能直接在查询参数中添加普通字符串,因为不同浏览器的URL长度限制(注意:规范不限制HTTP Get请求的长度,但不同的浏览器实现自己的限制),我们可以使用类似于消息摘要或散列(将任意长度的输入转换为固定长度的输出)并将其保存在DB中以供服务器理解请求并提供内容.这只是一个想法,我不确定这是否是解决这个问题的理想方案.
其他频繁使用的网站的行为:
在我的应用程序中,我有一个Job类,如下所定义/概述.此作业类的实例表示特定的作业运行.作业可以有多个检查点,每个检查点可以有多个命令.
Job
- JobName
- [JobCheckpoint]
- StartTime
- EndTime
- Status
- ...
JobCheckpoint
- JobCheckpointName
- [JobCommand]
- StartTime
- EndTime
- Status
- ...
JobCommand
- JobCommandName
- [Command]
- StartTime
- EndTime
- Status
- ...
Run Code Online (Sandbox Code Playgroud)
在任何一天,有100k个不同的工作运行.作业信息保留在文件系统中.我想在Python中设计一个用户界面来查询这些作业对象.例如,用户应该能够查询
为了解决这个问题,我想在用户界面中提供以下方法.
get_jobs(Filter)
Run Code Online (Sandbox Code Playgroud)
我不知道如何在Python中设计这个Filter类
这里的潜在客户非常感谢.
我正在设计一个多租户工作负载自动化软件(可自动运行Jobs的软件)。为此,我正在创建一个默认的Job配置类。默认情况下,此类中指定的配置将应用于所有类型的作业。
租户(作业的所有者)可以选择针对其特定类别的作业覆盖这些默认配置。
例如:
# Default configurations for all types of Jobs
class DefaultConfigurations:
def __init__(self, job_defintion):
self.job_state_database = DEFAULT_DB
self.job_definition_repository_type = DEFAULT_REPO
....
# there will be 100's of configurations like this.
Run Code Online (Sandbox Code Playgroud)
现在,如果某些租户想要为其特定类型的作业覆盖默认应用程序配置,则他们可以继承DefaultConfiguration类并覆盖他们想要覆盖的配置。
例如:
# These overridden configurations will be applied to all the HiveJobs.
class HiveJobs(DefaultConfigurations):
def __init__(self, job_definition):
self.job_state_database = "sql"
self.job_definition_repository_type = "svn"
# These overridden configurations will be applied to all the SparkJobs.
class SparkJobs(DefaultConfigurations):
def __init__(self, job_definition):
self.job_state_database = "MongoDb"
if (job_definition.technology == "Old")
self.job_state_database …
Run Code Online (Sandbox Code Playgroud) 我想装饰我班级的所有方法。我在这里编写了一个示例小装饰器用于说明目的。
装饰器:
def debug(func):
msg = func.__name__
@wraps(func)
def wrapper(*args, **kwargs):
print(msg)
return func(*args, **kwargs)
return wrapper
def debugmethods(cls):
for key, val in vars(cls).items():
if callable(val):
setattr(cls, key, debug(val))
return cls
Run Code Online (Sandbox Code Playgroud)
现在我想装饰我班级的所有方法。一种简单的方法是在我的班级之上使用 @debugmethods 注释,但我正在尝试了解另外两种不同的方法。
a) 覆盖 __new__
class Spam:
def __new__(cls, *args, **kwargs):
clsobj = super().__new__(cls)
clsobj = debugmethods(clsobj)
return clsobj
def __init__(self):
pass
def foo(self):
pass
def bar(self):
pass
spam = Spam()
spam.foo()
Run Code Online (Sandbox Code Playgroud)
b) 编写元类
class debugmeta(type):
def __new__(cls, clsname, bases, clsdict):
clsobj = super().__new__(cls, clsname, bases, clsdict)
clsobj …
Run Code Online (Sandbox Code Playgroud) 如何在 Python 2.7 中编写如下测试用例?我没有使用 Pytest/Python3 的选项。
import unittest
class TestStringMethods(unittest.TestCase):
def test_upper(self):
tests = [
('foo', 'FOO'),
('too', 'TOO'),
('poo', 'POO'),
]
for value, expected in tests:
with self.subTest(value=value):
self.assertEqual(value.upper(), expected)
if __name__ == '__main__':
unittest.main()
Run Code Online (Sandbox Code Playgroud)
总之,我正在寻找 Python 2.7 中“Pytest 中的参数化装置”和“unittest 的子测试功能”的替代品。
我可以在 Python 2.7 中做类似下面的事情,但第一个失败的断言将退出测试。由于我的测试用例中只有一种方法,因此只有一个测试运行 - 尽管一项测试评估了许多断言。
class TestStringMethods(unittest.TestCase):
def test_upper(self):
self.assertEqual('foo'.upper(), 'FOO')
self.assertEqual('too'.upper(), 'TOO')
self.assertEqual('poo'.upper(), 'POO')
if __name__ == '__main__':
unittest.main()
Run Code Online (Sandbox Code Playgroud)
如果我想分别测试每个断言,我将不得不将每个断言放在自己的方法中,这会很麻烦。
如何使用 Prometheus 监控我的 python 进程(比如由 Cron 守护进程定期触发的一些脚本)?
请注意,这不是一个 Web 应用程序,而是一个由 Cron 守护程序定期启动的短暂进程。该脚本出现,完成其工作,然后终止。cron 守护进程每天多次启动相同的 python 脚本(大约 100k 次)。我想从该脚本的各种运行中捕获多个统计信息(例如,运行特定函数所需的时间、消耗的 CPU 和内存等)
我在这里缺少什么?
import sys
class MyBaseError(BaseException):
def __init__(self, message, base_message=None, *args):
self.message = message
self.base_message = base_message
super(MyBaseError, self).__init__()
def __str__(self):
if self.base_message is None:
return self.message
return self.message + " '" + str(self.base_message) + "'"
class MyError(MyBaseError):
"""
"""
class MyTypeError(MyError):
"""
"""
def run_me():
raise MyTypeError("run_me")
def sayonara():
try:
run_me()
except (MyBaseError) as e:
raise(MyBaseError("unable to run",
e,
e.args),
sys.exc_info()[2])
sayonara()
Run Code Online (Sandbox Code Playgroud)
错误:
Traceback (most recent call last):
File "main.py", line 32, in sayonara
run_me()
File "main.py", line 27, in …
Run Code Online (Sandbox Code Playgroud) python ×5
javascript ×2
prometheus ×2
api ×1
class ×1
ecmascript-6 ×1
exception ×1
metaclass ×1
python-2.7 ×1
python-3.x ×1
react-router ×1
reactjs ×1
redux ×1
uml ×1
url ×1