小编Kin*_*ins的帖子

排除 github 操作工作流结果状态中的退出代码

我有一个工作流程,在其中一个步骤中,如果命令以退出代码 1(失败)结束,我想运行下一个命令/作业(修复导致上一个命令失败的问题),但我不希望这样退出代码 1 影响工作流结果状态。
在这种情况下,如果我的退出代码为 1,即使我解决了问题,结果状态也将为failure,但我希望结果状态为success如果第二个命令解决了问题。
这可能吗?

这是我的workflow.yml
\

name: autoblack
on: [pull_request, push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Set up Python 3.8
        uses: actions/setup-python@v2.2.2
        with:
          python-version: 3.8
      - name: Install Black
        run: pip3 install git+git://github.com/psf/black
        
      - name: Run black --check .
        run: black --check .
  
  reformat:
    runs-on: ubuntu-latest
    needs: [build]
    if: always() && (needs.build.result == 'failure')
    steps:
      - uses: actions/checkout@v2.3.4
      - name: Set up Python 3.8
        uses: actions/setup-python@v2.2.2
        with:
          python-version: 3.8 …
Run Code Online (Sandbox Code Playgroud)

github python-3.x github-actions

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

重写 simple-jwt 的 TokenObtainPairSerializer 来实现 2FA

我目前正在尝试在我的 Django 应用程序中实现双因素身份验证。我做的第一件事是修改Meta类中的类UserSerializer以添加两个字段enabled(指示用户是否启用 2FA 的布尔值)和secret_key(生成 OTP 的密钥,当用户启用 2FA 时共享给用户)。

为了最大限度地修改登录流程,我修改了发送以生成访问令牌的表单,以包含新字段“otp”。用户可以填写也可以不填写,后端会检查用户是否启用了2FA,如果是,OTP是否正确。

如果没有 2FA,登录只是一个带有 body 的 POST 请求{"username": usr, "password": pwd}。这已成为带有 body 的 POST 请求{"username": usr, "password": pwd, "otp": otp}。如果用户尚未启用 2FA,他只需将该opt字段留空即可。

我的urls.py看起来像这样:

path("api/token/", TokenObtainPairView.as_view(), name="token_obtain_pair")
Run Code Online (Sandbox Code Playgroud)

我的想法是重写 TokenObtainPairView 以适应新的请求。根据我的发现,我必须改变validate方法,但我真的不知道如何做到这一点。enabled我可能必须获取用户的和字段的值secret_key(基于用户名)来生成 OTP(如果相关)并根据字段进行检查otp。问题是,我不知道该怎么做,而且我在 simple-jwt 实现中有点迷失了。

python django jwt django-rest-framework multi-factor-authentication

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

未处理的异常:查找已停用小部件的祖先是不安全的。怎么解决这个问题?

我正在尝试将条纹支付集成到 flutter 移动应用程序中。完成付款后,我希望应用程序执行Navigator.pop(context)。但是,我收到错误消息:

未处理的异常:查找已停用小部件的祖先是不安全的。E/flutter (2773):此时 widget 元素树的状态不再稳定。

这是我的条纹支付代码

class ExistingCardsPage extends StatefulWidget {
 static const String id = 'exsiting-card';
 ExistingCardsPage({Key key}) : super(key: key);

 @override
 ExistingCardsPageState createState() => ExistingCardsPageState();
}

class ExistingCardsPageState extends State<ExistingCardsPage> {
 List cards = [];
 StripeService _service = StripeService();

 Future<StripeTransactionResponse> payViaExistingCard(
     BuildContext context, card, amount) async {
    await EasyLoading.show(status: "Please wait....");
    var expiryArr = card['expiryDate'].split('/');
    CreditCard stripeCard = CreditCard(
     number: card['cardNumber'],
     expMonth: int.parse(expiryArr[0]),
     expYear: int.parse(expiryArr[1]),
   );
   var response = await StripeService.payViaExistingCard(
      amount: '${amount}00', currency: …
Run Code Online (Sandbox Code Playgroud)

stripe-payments flutter flutter-widget

4
推荐指数
1
解决办法
9519
查看次数

使用装饰器向被装饰函数添加参数

我有一个foo在执行过程中记录一些信息的函数:

import logging

logging.basicConfig()

def foo(x):
    for i in range(10):
        logging.info(f"This is iteration number {i}.")
        x += i
    return x
Run Code Online (Sandbox Code Playgroud)

问题:是否可以创建一个装饰器,log_or_not以便我可以foo使用添加的参数来调用我的装饰函数,如下所示:

foo(x=x, level=logging.INFO)
Run Code Online (Sandbox Code Playgroud)

现在我所拥有的就是这个,一个将日志记录级别设置为 INFO 的装饰器,执行该函数,然后将日志记录级别返回到原始级别:

def log_or_not(func):
    def wrap_function(*args, **kwargs):
        original_level = logging.root.level
        print(original_level)
        logging.getLogger().setLevel(logging.INFO)
        y = func(*args, **kwargs)
        logging.getLogger().setLevel(original_level)
        return y
    return wrap_function

@log_or_not
def foo(x):
    for i in range(10):
        logging.info(f"This is iteration number {i}.")
        x += i
    return x
Run Code Online (Sandbox Code Playgroud)

python decorator python-decorators

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

Prometheus 保留时间设置为 1 年,但保留数据的时间不会超出默认值 15 天

我最近安装了 Prometheus 并使用 Grafana 进行报告。

我在安装过程中将 Prometheus 设置为保留时间为 1 年:

--storage.tsdb.retention.time=1y
Run Code Online (Sandbox Code Playgroud)

现在,我们从昨天开始注意到 15 天前的数据不再显示。我的代码有问题吗?是1y不是不被认可?

prometheus prometheus-operator prometheus-blackbox-exporter

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