小编Bas*_*ian的帖子

Ansible Cloudwatch规则报告失败的调用

我创建了一个AWS lambda,当我测试它时以及当我通过cloudwatch规则手动创建一个cron作业时,它运行良好.

它将度量标准报告为调用(未失败),还记录有关执行的详细信息.

然后我决定删除手动创建的cloudwatch规则,以便创建一个带有ansible的规则.

  - name: Create lambda service.
    lambda:
      name: "{{ item.name }}"
      state: present
      zip_file: "{{ item.zip_file }}"
      runtime: 'python2.7'
      role: 'arn:aws:iam::12345678901:role/lambda_ecr_delete'
      handler: 'main.handler'
      region: 'eu-west-2'
      environment_variables: "{{ item.env_vars }}"
    with_items:
      - name: lamda_ecr_cleaner
        zip_file: assets/scripts/ecr-cleaner.zip
        env_vars:
          'DRYRUN': '0'
          'IMAGES_TO_KEEP': '20'
          'REGION': 'eu-west-2'
    register: new_lambda

  - name: Schedule a cloudwatch event.
    cloudwatchevent_rule:
      name: ecr_delete
      schedule_expression: "rate(1 day)"
      description: Delete old images in ecr repo.
      targets:
        - id: ecr_delete
          arn: "{{ item.configuration.function_arn }}"
    with_items: "{{ new_lambda.results }}"
Run Code Online (Sandbox Code Playgroud)

这创造了几乎完全相同的云观察规则.我手动创建的唯一区别在于目标,lambda版本/别名在设置为版本时手动创建时设置为默认值,使用ansible创建时具有相应的版本号.

使用ansible创建的cloudwatch规则只有失败的调用. …

amazon-web-services amazon-cloudwatch ansible

10
推荐指数
2
解决办法
7042
查看次数

如何在django social-auth中设置用户的电子邮件地址

我安装了django social-auth(来自omab)并且用户在数据库中有一个我想保留的电子邮件地址但是当用户使用social-auth从facebook登录时,他们的电子邮件被他们拥有的电子邮件取代在他们的Facebook帐户.我不确定默认设置是否是设置,无法找到如何停止此行为.

django django-socialauth

9
推荐指数
2
解决办法
1997
查看次数

重启容器时如何在Docker中重用相同的卷?

我有一个Dockerfile,最后说明一个卷就像这样

VOLUME /data
Run Code Online (Sandbox Code Playgroud)

现在,当我构建并运行此容器时,我确实创建并安装了一个新卷/data.
这是非常好的,但我希望能够停止此容器,然后再次运行它,并确保安装与其数据相同的卷.

我怎样才能做到这一点?
理想情况下,相同的命令会在已经存在的情况下创建卷,如果已经存在则重用它.

docker

9
推荐指数
2
解决办法
6402
查看次数

如何在pytest中测试类的继承方法

house.py

class House:
    def is_habitable(self):
        return True

    def is_on_the_ground(self):
        return True
Run Code Online (Sandbox Code Playgroud)

conftest.py

import pytest
from house import House


@pytest.fixture(scope='class')
def house():
    return House()
Run Code Online (Sandbox Code Playgroud)

test_house.py

class TestHouse:
    def test_habitability(self, house):
        assert house.is_habitable()

    def test_groundedness(self, house):
        assert house.is_on_the_ground()
Run Code Online (Sandbox Code Playgroud)

到那时,一切都在测试中。

现在我添加一个子类并覆盖一个方法house.py

class House:
    def is_habitable(self):
        return True

    def is_on_the_ground(self):
        return True


class TreeHouse(House):
    def is_on_the_ground(self):
        return False
Run Code Online (Sandbox Code Playgroud)

我还为该类添加了一个新装置conftest.py

import pytest
from house import House
from house import TreeHouse


@pytest.fixture(scope='class')
def house():
    return House()


@pytest.fixture(scope='class')
def tree_house(): …
Run Code Online (Sandbox Code Playgroud)

python pytest

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

如何切换Vagrant虚拟机?

当我意识到我需要通过端口8000访问它以测试Web界面时,我正在使用Vagrant设置的虚拟机,所以我vagrant halt为了修改Vagrantfile并转发端口8000然后我保存了文件并做了vagrant up 引导备份那台机器,让我惊讶的是,Vagrant从零开始构建了一台新机器.现在,当我查看名为"VirtualBox VMs"的文件夹时,我可以看到两个名称相同的VM +一个不同的长号.我相信一个是我想用我的所有包和设置启动的第一台机器,而另一台是新的空机器.我怎样才能切换回第一个,所以当我这样做的vagrant up时候实际上是那个呢?并且可选地如何摆脱新的空的?

ubuntu virtualbox vagrant

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

python一次性检查各种等式的最低成本

我从一个充满False元素的列表开始.
然后True在迭代过程中将这些元素独立切换.
我需要知道列表何时完全为True.

假设我有3个元素,它们以...开头

[False, False, False]
Run Code Online (Sandbox Code Playgroud)

然后我在迭代中检查它们,如:

elements == [True, True, True]
Run Code Online (Sandbox Code Playgroud)

元素列表是固定的,不应该增长(或缩小).您可以将这些元素视为开关,输入决定了它们的数量,并且它们开始全部关闭.随着时间的推移,唯一可能发生的事情是,迭代中发生的事件会打开(True)各个开关.

python如何进行检查以及成本是多少?
检查成本的最佳方法是什么?
有没有一种方法可以使用位操作或任何一次检查所有元素的方法?

python list

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

Python,如何将状态/ update_with_media发布到Twitter?

我能够在Python中成功发布状态更新(推文):

import urllib
import oauth2 as oauth

token = oauth.Token(access_token,access_token_secret)
consumer = oauth.Consumer(consumer_key,consumer_secret)

client = oauth.Client(consumer,token)

data = {'status': 'hello world'}
request_uri = 'https://api.twitter.com/1/statuses/update.json'

resp, content = client.request(request_uri, 'POST', urllib.urlencode(data))
Run Code Online (Sandbox Code Playgroud)

现在我想知道我需要改变什么才能用update_with_media发布图片?

python twitter

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

Django,在模型外键中按组过滤用户

我有一个博客文章的模型,其中帖子的所有者是用户的外键.使用该模型,任何用户都可以拥有博客文章.我想改变它,以便只有某个组中的用户称为'博主' - 可以拥有一个博客帖子对象.理想情况下它也应该出现在管理员中,我的意思是在博客文章管理员现在"所有者"的菜单列出了所有用户,它应该只列出'博主'组中的那些用户.我如何使用Django 1.3做到这一点?

django admin models

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

如何使用Chef下载和安装文件

我有一个基本的Chef设置,可以很好地安装具有特定服务器和配置的系统.我的目标是能够在没有SSHing的情况下安装所有内容到服务器中.在这个特定的情况下,我正在安装Neo4j数据库,并希望添加一个插件(身份验证扩展),安装过程是下载.jar并将其复制到一个文件夹.我怎么能和厨师一起做?

chef-infra

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

如何在上下文管理器中使用线程?

考虑这个threading.Thread类:

class Sleeper(threading.Thread):
    def __init__(self, sleep=5.0):
        threading.Thread.__init__(self)
        self.event = threading.Event()
        self.sleep = sleep

    def run(self):
        while self.sleep > 0 and not self.event.is_set():
            self.event.wait(1.0)
            self.sleep -= 1

    def stop(self):
        self.event.set()
Run Code Online (Sandbox Code Playgroud)

它会休眠一定的时间,并在达到该时间之前退出或停止。

我用它作为:

sleeper = Sleeper()
try:
    sleeper.start()
    # do stuffs here
except:
    # handle possible exceptions here
finally:
    sleeper.stop()
Run Code Online (Sandbox Code Playgroud)

我更愿意像上下文管理器一样使用它:

with Sleeper():
    # do stuffs here
Run Code Online (Sandbox Code Playgroud)

然后线程在退出with块时停止。

我尝试过添加__enter____exit__方法,它似乎有效,但我不确定这是正确的方法:

def __enter__(self):
    self.start()
    return self
Run Code Online (Sandbox Code Playgroud)

def __exit__(self, type, value, traceback):
    self.stop()
Run Code Online (Sandbox Code Playgroud)

但我真的不确定我在这里做什么。应该如何正确进行呢?

python contextmanager python-multithreading

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