小编San*_*Kim的帖子

python ImportError:没有名为'apt_pkg'的模块

当我尝试 sudo add-apt-repository ppa:webupd8team/java

ubuntu终端显示此错误消息.

Traceback (most recent call last):
  File "/usr/bin/add-apt-repository", line 11, in <module>
    from softwareproperties.SoftwareProperties import SoftwareProperties
  File "/usr/lib/python3/dist-packages/softwareproperties/SoftwareProperties.py", line 27, in <module>
    import apt
  File "/usr/lib/python3/dist-packages/apt/__init__.py", line 21, in <module>
    import apt_pkg
Run Code Online (Sandbox Code Playgroud)

虽然我尝试apt-get install python3-apt但仍然没有工作(我也尝试重新安装后删除),我也试过pip3 install apt-pkg但它说

Downloading/unpacking apt-pkg
  Could not find any downloads that satisfy the requirement apt-pkg
No distributions at all found for apt-pkg
Storing complete log in /home/kim/.pip/pip.log
Run Code Online (Sandbox Code Playgroud)

当然,导入apt_pkg也不能在python3中工作(但它在python2.7中工作,我有两个版本的python一个是2.7另一个是3.3)

我怎么能在python3上安装这个包

ubuntu python-3.x

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

无论用户访问的内容类型如何,将 CloudFront 定位在 ALB 前面是否更好?

我想在 AWS 中构建一个 Web/应用程序服务器,我想用它CloudFront来提供低延迟的内容并ALB平衡服务器之间的流量。

如果有一些内容需要缓存,使用CloudFront前面ALB应该会有好处。

但是,如果不是,考虑到性能和成本,是否仍然建议使用CloudFront前面ALB

比如下面他们之间推荐哪一个。

  1. 无论用户访问什么内容,用户始终ALB通过它CloudFront进行访问。

  2. 用户访问CloudFrontALB直接取决于用户访问的内容。

哪个是更好的模式?

amazon-web-services amazon-cloudfront aws-application-load-balancer

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

python非块读取文件

我想读取非块模式的文件.所以我在下面做了

import fcntl
import os

fd = open("./filename", "r")
flag = fcntl.fcntl(fd.fileno(), fcntl.F_GETFD)
fcntl.fcntl(fd, fcntl.F_SETFD, flag | os.O_NONBLOCK)
flag = fcntl.fcntl(fd, fcntl.F_GETFD)
if flag & os.O_NONBLOCK:
    print "O_NONBLOCK!!"
Run Code Online (Sandbox Code Playgroud)

但价值flag仍然代表0.为什么......?我想我应该根据改变os.O_NONBLOCK

当然,如果我调用fd.read(),它会在read()处被阻塞.

python nonblocking python-2.7

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

API网关lambda授权者自定义状态代码

我有关于 API Gateway 授权者和 lambda 函数的问题。

我的场景如下:我在 AWS API Gateway 中有一个资源启用了授权。授权者调用 lambda 函数,如果用户未获得授权,该函数会将用户重定向到另一个 URL。

所以基本上我想自定义授权者以返回 302 而不是 401/403/500 状态代码。你知道这是否可能吗?

我知道在网关的集成阶段使用 lambda 函数可以让我自定义响应。这个特定场景怎么样?

谢谢。

amazon-web-services aws-lambda aws-api-gateway

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

有没有办法使用带有桥接网络的 Virtualbox 驱动程序创建 docker-machine?

我想要我的docker machine使用bridge networkVirtualBox但我可以找到任何选项,docker-machine create --driver virtualbox所以我只是VirtualBox通过手动设置来修复它。

修复网络设置后,但是,docker-machine ls显示此错误docker machine.

机器没有仅主机适配器。

我对这些问题有疑问。

  1. 有什么办法来创建docker machinebridge network从第一。
  2. docker-machine将网络设置修复为bridge.(现在,我只是重新创建docker machine通过generic driver)后,有什么方法可以正常工作
  3. 如果没有任何办法,为什么 docker prevent bridge network,任何原因?

virtualbox docker-machine

6
推荐指数
0
解决办法
548
查看次数

什么是 event_loop_policy 以及为什么在 python asyncio 中需要它?

事件循环文档中提到event_loop_policy,但没有描述它是什么,为什么需要将详细介绍这个抽象层。(文档甚至说可以自定义这一层)。

另外,help(asyncio.get_event_loop_policy())只是说...

带有子进程观察器的 UNIX 事件循环策略。

然后,我就更糊涂了。什么是watcher?什么是child processesevent loop

python event-loop python-asyncio

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

什么是 Cloudfront 最小 TTL?

我试图理解Minimum TTLMaximum TTLDefault TTL用这个文件

据我了解,Maximum TTLHTTP cache header出现在响应中时使用以限制最大缓存时间,并 Default TTL在没有HTTP cache header用作默认缓存时间时使用。

但是,对于Maximum TTL,没有具体提及。

另外,它提到了与转发头的关系。这是否意味着如果我将任何 HTTP 标头设置为转发到源并且Minimum TTL不为 0,则它不会缓存任何内容?

最小 TTL 指定在 CloudFront 将另一个请求转发到源以确定对象是否已更新之前,您希望对象在 CloudFront 缓存中停留的最短时间(以秒为单位)。最小 TTL 的默认值为 0 秒。

重要的

. 如果您将 CloudFront 配置为将所有标头转发到您的源以进行缓存行为,则 CloudFront 永远不会缓存关联的对象。相反,CloudFront 将对这些对象的所有请求转发到源。在该配置中,最小 TTL 的值必须为 0。

amazon-web-services amazon-cloudfront

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

部署新版本时 Lambda 停机

默认情况下,AWS 使用LATEST更新的最新 lambda 版本的别名,我假设执行以下步骤。

  1. 现在,LATEST别名点版本 5。
  2. 用户部署新版本的 lambda。
  3. 在部署新版本时,LATEST别名仍然指向版本 5。
  4. 部署完成后,Lambda 只是将LATEST别名切换到版本 6。

通过这些步骤,lambda 似乎有几乎 0 停机时间。

然而,这只是一个假设。

是否有任何文档明确提到部署新版本时的停机时间?我只想知道部署新版本时 AWS 保证停机时间。

我也在这里找到了类似的问题,但我的问题不清楚。

amazon-web-services aws-lambda

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

boto3 s3 generate_presigned_url ExpiresIn 不能按预期工作

我试图pre-signed URL用 7dsys 过期时间生成。(据说最长持续时间为 7 天,AWS S3 预签名 URL 没有到期日

# It is called and retruned in AWS Lambda
boto3.client('s3').generate_presigned_url(
    'get_object',
    Params={'Bucket': bucket, 'Key': object_key},
    ExpiresIn=(60*60*24*7)  # 7days
)
Run Code Online (Sandbox Code Playgroud)

然而,似乎不是保留了pre-signed URL7 天,而是仅仅保留了几个小时。之后pre-signed URL只返回 XML 格式。

<Error>
  <Code>ExpiredToken</Code>
    <Message>The provided token has expired.</Message>
.
.
.
</Error>
Run Code Online (Sandbox Code Playgroud)

甚至每次尝试的过期时间似乎都不一样,有时是 5 小时,有时是 12 小时。

我不知道为什么。

amazon-s3 amazon-web-services pre-signed-url

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

tcsetattr() 带有 TCSADRAIN 标志的阻塞时间很奇怪

我在 Linux 中使用串行端口进行编码。

并且通信的要求是5ms inter-byte time

它要求我在write()调用之前根据字节的值更改每个字节的奇偶校验模式(偶数和奇数)。

所以我编码如下(我简单描述代码)

void setWakeupMode(int fd, bool mode) {
    struct termios tio;

    bzero(&tio, sizeof(tio));
    tcgetattr(fd, &tio);


    if (mode == false) {
        tio.c_cflag &= ~PARODD;
    } else if (mode == true) {
        tio.c_cflag |= PARODD;
    }

    if(tcsetattr(fd, TCSADRAIN, &tio) < 0){
        perror("tcsetattr Error");
    }
}

int main(){
    unsigned char a[2] = {0x01, 0x0F};

    write(fd, a, 1);

    setWakeupMode(fd, true);

    write(fd, a+1, 1);

}
Run Code Online (Sandbox Code Playgroud)

但是代码不满足字节间时间,导致近 20 毫秒。

所以我尝试打印每个系统调用之间的确切时间,如下所示。

   int main(){
        unsigned char a[2] = …
Run Code Online (Sandbox Code Playgroud)

c c++ linux serial-port

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