我创建了一个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规则只有失败的调用. …
我安装了django social-auth(来自omab)并且用户在数据库中有一个我想保留的电子邮件地址但是当用户使用social-auth从facebook登录时,他们的电子邮件被他们拥有的电子邮件取代在他们的Facebook帐户.我不确定默认设置是否是设置,无法找到如何停止此行为.
我有一个Dockerfile,最后说明一个卷就像这样
VOLUME /data
Run Code Online (Sandbox Code Playgroud)
现在,当我构建并运行此容器时,我确实创建并安装了一个新卷/data
.
这是非常好的,但我希望能够停止此容器,然后再次运行它,并确保安装与其数据相同的卷.
我怎样才能做到这一点?
理想情况下,相同的命令会在已经存在的情况下创建卷,如果已经存在则重用它.
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) 当我意识到我需要通过端口8000访问它以测试Web界面时,我正在使用Vagrant设置的虚拟机,所以我vagrant halt
为了修改Vagrantfile并转发端口8000然后我保存了文件并做了vagrant up
引导备份那台机器,让我惊讶的是,Vagrant从零开始构建了一台新机器.现在,当我查看名为"VirtualBox VMs"的文件夹时,我可以看到两个名称相同的VM +一个不同的长号.我相信一个是我想用我的所有包和设置启动的第一台机器,而另一台是新的空机器.我怎样才能切换回第一个,所以当我这样做的vagrant up
时候实际上是那个呢?并且可选地如何摆脱新的空的?
我从一个充满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中成功发布状态更新(推文):
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发布图片?
我有一个博客文章的模型,其中帖子的所有者是用户的外键.使用该模型,任何用户都可以拥有博客文章.我想改变它,以便只有某个组中的用户称为'博主' - 可以拥有一个博客帖子对象.理想情况下它也应该出现在管理员中,我的意思是在博客文章管理员现在"所有者"的菜单列出了所有用户,它应该只列出'博主'组中的那些用户.我如何使用Django 1.3做到这一点?
我有一个基本的Chef设置,可以很好地安装具有特定服务器和配置的系统.我的目标是能够在没有SSHing的情况下安装所有内容到服务器中.在这个特定的情况下,我正在安装Neo4j数据库,并希望添加一个插件(身份验证扩展),安装过程是下载.jar并将其复制到一个文件夹.我怎么能和厨师一起做?
考虑这个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)
但我真的不确定我在这里做什么。应该如何正确进行呢?