小编tot*_*ack的帖子

使用 asyncio 处理超时

免责声明:这是我第一次尝试该asyncio模块。

我使用asyncio.wait以下方式来尝试支持超时功能,等待一组异步任务的所有结果。这是一个更大的库的一部分,因此我省略了一些不相关的代码。

请注意,该库已经支持提交任务以及使用 ThreadPoolExecutors 和 ProcessPoolExecutors 使用超时,因此我对使用这些选项的建议或关于为什么我使用asyncio. 上代码...

import asyncio
from contextlib import suppress

... 

class AsyncIOSubmit(Node):
    def get_results(self, futures, timeout=None):
        loop = asyncio.get_event_loop()
        finished, unfinished = loop.run_until_complete(
            asyncio.wait(futures, timeout=timeout)
        )
        if timeout and unfinished:
            # Code options in question would go here...see below.
            raise asyncio.TimeoutError
Run Code Online (Sandbox Code Playgroud)

起初我并不担心在超时时取消挂起的任务,但后来我收到了Task was destroyed but it is pending!程序退出或loop.close. 经过一番研究后,我发现了多种取消任务并等待它们实际被取消的方法:

选项1:

[task.cancel() for task in unfinished]
for task in unfinished:
    with suppress(asyncio.CancelledError):
        loop.run_until_complete(task)
Run Code Online (Sandbox Code Playgroud)

选项2:

[task.cancel() for …
Run Code Online (Sandbox Code Playgroud)

python python-asyncio

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

AWS ACL/WAF - 如何更改规则优先级?

我有一个与我的应用程序负载均衡器关联的 WAF ACL,并且我想更改规则的优先级。我一生都找不到任何有关如何完成此操作的文档,也无法弄清楚如何调整 AWS UI 中的优先级。这是可能的还是我必须以不同的顺序从头开始重新创建我的 ACL?

在此输入图像描述

acl amazon-web-services amazon-waf

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

具有层缓存的 Docker 构建时秘密

我有一个 Dockerfile,它执行pip installAWS 代码工件中的一个包。安装需要身份验证令牌,因此我当前的方法是在构建脚本中生成动态/秘密存储库 URL,并将其作为构建参数传递到 Docker,这会导致我的 Dockerfile 中出现如下行:

ARG CORE_REPO_URL
ARG CORE_VERSION
RUN pip install -i $CORE_REPO_URL mylib_core==$CORE_VERSION
Run Code Online (Sandbox Code Playgroud)

在命令中使用 ARG 会RUN导致该层永远不会被缓存,因此即使库版本没有更改,该部分每次都会重建。

有没有更好的方法来做到这一点,以便在不更改的情况下使用层缓存CORE_VERSION

也许我应该aws在图像中安装工具链,以便可以在前面的步骤中生成动态存储库 URL(每次使用相同的命令,这样就不需要 ARG 并且希望缓存该层)?这样做的一个缺点是必须将 AWS 凭证放入映像中。docker secrets如果这是唯一的解决方案,我也许可以避免这种情况。

python amazon-web-services docker aws-codeartifact

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