我想使用blockinfile为我的ElasticSearch配置添加一个文本块,但每次运行我的playbook时,该块都会被添加到文件中 - 即使它已经存在.这是一个问题,因为ElasticSearch不只是取最后一个值,它在启动时会说"你有这个值的多个条目"(或类似的东西).
我的游戏看起来像这样:
- name: configure elasticsearch
blockinfile:
dest: /etc/elasticsearch/elasticsearch.yml
marker: "## added by ansible configuration"
block: |
network.host: 0.0.0.0
path.data: /var/lib
path.logs: /var/log/elasticsearch
path.repo: /home/chris/elastic-backups
state: present
Run Code Online (Sandbox Code Playgroud)
但在第二次运行我的剧本后,我的elasticsearch.yml文件看起来像:
## added by ansible configuration
network.host: 0.0.0.0
path.data: /var/lib
path.logs: /var/log/elasticsearch
path.repo: /home/chris/elastic-backups
## added by ansible configuration
network.host: 0.0.0.0
path.data: /var/lib
path.logs: /var/log/elasticsearch
path.repo: /home/chris/elastic-backups
## added by ansible configuration
Run Code Online (Sandbox Code Playgroud)
有没有办法只添加块,如果它还不存在?
有没有办法获得在日期或接近日期关闭的 GitHub 问题?我的代码库中有一个没有引用问题的提交,我想知道它是否是为了响应特定问题而完成的。
理想情况下,我想说“向我展示 8 月 10 日之后关闭的问题”
我正在尝试使用XSLT将XML文件转换为扁平的,管道分隔的文件(用于批量加载到Postgres中).我希望输出中的最后一列是节点的实际XML(用于其他后处理和调试).例如:
<Library>
<Book id="123">
<Title>Python Does Everythig</Title>
<Author>Smith</Author>
</Book>
<Book id="456">
<Title>Postgres is Neat</Title>
<Author>Wesson</Author>
</Book>
</Library>
Run Code Online (Sandbox Code Playgroud)
应该生成
Python Does Everything|Smith|<Book id="123"><Title>Python Does Everythig</Title>Author>Smith</Author></Book>
Postgres is Neat|Wesson|<Book id="456"><Title>Postgres is Neat</Title><Author>Wesson</Author></Book>
Run Code Online (Sandbox Code Playgroud)
我目前的XSL是
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:strip-space elements="*" />
<xsl:output method="text" omit-xml-declaration="yes" indent="no" />
<xsl:template match="//Book">
<xsl:value-of select="Title" />
<xsl:text>|</xsl:text>
<xsl:value-of select="Author" />
<!-- put in the newline -->
<xsl:text>
</xsl:text>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud) 我有一个包含Windows文件路径的字段,如下所示:
\\fs1\foo\bar\snafu.txt
c:\this\is\why\i\drink\snafu.txt
\\fs2\bippity\baz.zip
\\fs3\boppity\boo\baz.zip
c:\users\chris\donut.c
Run Code Online (Sandbox Code Playgroud)
我需要做的是找到重复文件名的数量(无论它们在哪个目录中).所以我想找到"snafu.txt"和"baz.zip",但不是donut.c.
PostgreSQL(8.4)中有没有办法找到文件路径的最后一部分?如果我能做到这一点,那么我可以使用count/group来找到我的问题孩子.
我正在尝试使用Django覆盖,但我似乎得到了不正确的结果.我的应用名为"stats",我有这个测试:
class ListSchoolsTest(TestCase):
def test_initial_list(self):
self.client.login(username='skeezy', password='skeezy')
resp = self.client.get("/stats/list_schools/")
self.assertEqual(resp.status_code, 200)
Run Code Online (Sandbox Code Playgroud)
在命令行上,我运行:
coverage run --source="." manage.py test stats
Run Code Online (Sandbox Code Playgroud)
测试通过了.我的所有观点目前都在stats/views.py中
但是,当我运行"报道报告"时,我得到这一行:
Name Stmts Miss Cover
----------------------------------------
<snip>
stats/views 110 110 0%
Run Code Online (Sandbox Code Playgroud)
任何想法我(不)这样做会导致报告报告stats/views.py中遗漏的所有行,即使它必须被击中以便测试通过?(就像腰带和吊带一样,我在我的视图中放了一个印刷声明,它肯定会被击中.)
有人ELI5有什么CONN_MAX_AGE吗?我认为它的工作原理如下:
1)请求#1进入,打开数据库连接1
2)请求#1使用连接1做一些工作
3)请求#1完成.由于CONN_MAX_AGE非零(并且尚未达到年龄),因此连接保持打开状态.
4)请求#2进入,Django重新使用连接#1到数据库.
但这似乎并没有发生.我的网站上有一个页面,每15秒进行一次AJAX轮询.在我的开发环境中,我看到开放连接(select count(*) from pg_stat_activity)的数量,慢慢增长,直到最终我得到
OperationalError: FATAL: sorry, too many clients already
Run Code Online (Sandbox Code Playgroud)
所以我想知道我哪里出错了.CONN_MAX_AGE是否仅用于在单个HTTP请求中保持连接打开?
更新:
仔细查看文档,我看到了:
开发服务器为它处理的每个请求创建一个新线程,否定持久连接的影响.在开发过程中不要启用它们.
啊,所以这似乎意味着一个连接"属于"一个线程.(并且线程可以基于CONN_MAX_AGE的值打开/关闭连接).
我有一堆服务器想要在 Google Cloud 上启动。我保留了一个静态 IP,这是我系统的“公共”入口点。
但我还需要能够直接访问所有其他服务器。我并不真正关心分配给它们的临时 IP,但是能够通过名称引用它们会非常方便(而不必从控制台复制并粘贴 IP 地址)。
我看到这个答案,但我希望在某个地方有一个不涉及脚本编写的配置选项。
我已经使用 django 开发服务器多年了。我开始他们
python manage.py runserver
Run Code Online (Sandbox Code Playgroud)
当我更改任何 python 代码时,它们会很好地重新启动。
现在我继承了别人的项目进行维护,无论出于什么原因,我更改了Python代码,服务器没有重新启动。我似乎找不到任何类型的配置选项会导致这种情况。
我没有--noreload设置标志,这是我的证明:
$ ps -ef | grep runserver
chris 290898 250765 1 11:55 pts/6 00:00:00 python manage.py runserver
chris 290914 290898 5 11:55 pts/6 00:00:01 /home/chris/.virtualenvs/my-webapp-4cLYw-9X/bin/python manage.py runserver
Run Code Online (Sandbox Code Playgroud)
以前有人遇到过这个吗?
更新
更多信息...同样奇怪
该项目是这样设置的
src/manage.py
src/myproject (contains settings.py, urls.py, etc)
src/apps/app_one (contains models.py, tests.py, etc)
src/apps/app_two (contains models.py, tests.py, etc)
Run Code Online (Sandbox Code Playgroud)
如果我编辑 src/myproject 下的任何文件,那么服务器将按预期重新启动。但是,如果我编辑 app_one 或 app_two 下的文件,则服务器不会重新启动。
更新#2
在它让我发疯之前复活它(可能为时已晚)。
我添加django.utils.autoreload': {'level': 'DEBUG'},到settings.LOGGING …
我想创建可以创建权限和组的数据迁移,以便其他开发人员可以运行迁移并进行所有设置。我能够创建迁移并很好地运行它们,但是现在运行测试时出现错误。
但是,如果我这样做:
from django.contrib.auth.models import Group
def add_operations_group(apps, schema_editor):
Group.objects.get_or_create(name='operations')
Run Code Online (Sandbox Code Playgroud)
我得到:
django.db.utils.OperationalError: no such table: auth_group
Run Code Online (Sandbox Code Playgroud)
如果我这样做:
def add_operations_group(apps, schema_editor):
Group = apps.get_model("django.contrib.auth", "group")
Group.objects.get_or_create(name='operations')
Run Code Online (Sandbox Code Playgroud)
我得到:
LookupError: No installed app with label 'django.contrib.auth'
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?还是有一种“ Django方式”来确保创建权限和组之类的东西?
我有一个像这样的 Django 模型:
class NicePerson(models.Model):
last_name = models.CharField(max_length=100)
def save(self, make_irish=False, *args, **kwargs):
"""if make_irish is True, prepend last_name with O'"
if make_irish:
self.last_name = "O'" + self.last_name
super(MyModel, self).save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
我有一个 FactoryBoy 类来构建 NicePerson 实例
class NicePersonFactory(factory.django.DjangoModelFactory):
class Meta:
model = NicePerson
Run Code Online (Sandbox Code Playgroud)
我知道我可以像这样一起使用它们:
nice_person = NicePersonFactory(last_name='Shea')
Run Code Online (Sandbox Code Playgroud)
但是如何将“make_irish”参数传递给我的save()方法呢?
django ×3
ansible ×1
coverage.py ×1
django-orm ×1
factory-boy ×1
github ×1
postgresql ×1
sql ×1
xslt ×1