小编Lok*_*wal的帖子

转到序列图中?

如何在序列图中显示 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)

uml sequence-diagram

6
推荐指数
1
解决办法
8845
查看次数

Prometheus 错误 - 摄取样本时出错

我在 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

有任何关于为什么会发生这种情况以及我该如何解决这个问题的指示吗?

prometheus

6
推荐指数
1
解决办法
2万
查看次数

使用展开从数组中删除元素

我有很多动物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)

注意:我不想要突变,所以请不要建议改变数组的解决方案。

javascript ecmascript-6

5
推荐指数
1
解决办法
3万
查看次数

在单页面应用程序中创建临时URL

在我的基于反应的单页面应用程序中,我的页面分为两个窗格.

左窗格:过滤面板.

右窗格:网格(包含通过应用过滤器的数据的表)

总之,我有一个看起来非常类似于amazon.com的应用程序.默认情况下,当用户在浏览器中点击应用程序的根端点(/)时,我会从服务器获取最近7天的数据并将其显示在网格中.

过滤器面板有几个过滤器(例如,时间过滤器用于获取落在指定时间间隔内的数据,ID用于搜索具有特定ID的数据等)以及附加在过滤器面板标题中的搜索按钮.点击搜索按钮通过在帖子表单体内提供选定的过滤器来对服务器进行调用,服务器返回匹配传递的过滤器的数据,并且我的前端应用程序显示从网格内的服务器返回的这些数据.

现在,当某人点击过滤器面板中的搜索按钮时,我想在URL的查询参数中反映所选过滤器,因为它可以帮助我与我网站的其他用户共享这些URL,以便他们可以看到我应用的过滤器和查看仅与这些过滤器匹配的网格内的数据.

这里的问题是,如果在搜索按钮上单击,我使用带有查询参数的http get,由于不同浏览器对URL长度的限制,我最终会破坏应用程序.

请建议我正确的解决方案来创建这样的URL,这将帮助我在过滤器面板中设置选定的过滤器,而不会在我的应用程序中造成任何副作用.

可能的解决方案:考虑到我们不能直接在查询参数中添加普通字符串,因为不同浏览器的URL长度限制(注意:规范不限制HTTP Get请求的长度,但不同的浏览器实现自己的限制),我们可以使用类似于消息摘要或散列(将任意长度的输入转换为固定长度的输出)并将其保存在DB中以供服务器理解请求并提供内容.这只是一个想法,我不确定这是否是解决这个问题的理想方案.

其他频繁使用的网站的行为:

  • amazon.com,newegg.com - >使用散列网址.
  • kayak.com - >因为他们有非常明确的关键字,他们使用简短的形式,如印度的IN,班加罗尔的BLR等,并将其与否定逻辑相结合,以进一步优化最大网址长度.没有选中,但在大量选择过滤器后理想情况下会中断.
  • flipkart.com - >将字符串直接附加到查询参数,并在违反限制后中断.验证了这个.

javascript url reactjs react-router redux

5
推荐指数
1
解决办法
434
查看次数

用于在Python中过滤对象的用户界面

在我的应用程序中,我有一个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中设计一个用户界面来查询这些作业对象.例如,用户应该能够查询

  1. 在x和y间隔之间运行的所有作业.
  2. 运行命令x的所有作业.
  3. 所有工作都处于失败状态.
  4. 处于失败和终止状态的所有作业.
  5. 特定工作的所有检查点/命令.
  6. 还有很多...

为了解决这个问题,我想在用户界面中提供以下方法.

 get_jobs(Filter)
Run Code Online (Sandbox Code Playgroud)

我不知道如何在Python中设计这个Filter类

  1. 支持Job对象上的所有这类查询.
  2. 并为用户保持API的简单/直观使用.

这里的潜在客户非常感谢.

python api design-patterns

5
推荐指数
1
解决办法
358
查看次数

Python中的应用程序配置文件

我正在设计一个多租户工作负载自动化软件(可自动运行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)

python class

5
推荐指数
1
解决办法
866
查看次数

通过覆盖 __new__ 装饰类方法不起作用?

我想装饰我班级的所有方法。我在这里编写了一个示例小装饰器用于说明目的。

装饰器:

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 metaclass python-internals

5
推荐指数
1
解决办法
575
查看次数

python 2.7中的子测试功能?

如何在 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)

如果我想分别测试每个断言,我将不得不将每个断言放在自己的方法中,这会很麻烦。

python python-2.7 parameterized-unit-test python-unittest

5
推荐指数
0
解决办法
1143
查看次数

使用 Prometheus 监控短暂的 python 批处理作业进程

如何使用 Prometheus 监控我的 python 进程(比如由 Cron 守护进程定期触发的一些脚本)?

请注意,这不是一个 Web 应用程序,而是一个由 Cron 守护程序定期启动的短暂进程。该脚本出现,完成其工作,然后终止。cron 守护进程每天多次启动相同的 python 脚本(大约 100k 次)。我想从该脚本的各种运行中捕获多个统计信息(例如,运行特定函数所需的时间、消耗的 CPU 和内存等)

prometheus

5
推荐指数
1
解决办法
2799
查看次数

异常必须派生自 BaseException

我在这里缺少什么?

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 exception python-3.x

5
推荐指数
1
解决办法
2万
查看次数