我正在写一个相当复杂的脚本正在使用
asyncio.create_subprocess_exec(sub_cmd, *sub_cmd_args, stdout=PIPE, stderr=PIPE)
Run Code Online (Sandbox Code Playgroud)
包装另一个Python程序 - 我无法永久修改或直接包含 - 捕获其stdout/err进行日志记录.包装的Python脚本没有使用-u(unbuffered)选项,因此包装器程序倾向于登录大缓冲块.如果这是常规子进程.Popen我可以传递bufsize=1给我想要的东西,即行缓冲.但是,如果我将它添加到asyncio.create_subprocess_exec(),他们会特意陷阱,我得到:
<snip>
File "/usr/lib64/python3.4/asyncio/subprocess.py", line 193, in create_subprocess_exec
stderr=stderr, **kwds)
File "/usr/lib64/python3.4/asyncio/base_events.py", line 642, in subprocess_exec
raise ValueError("bufsize must be 0")
ValueError: bufsize must be 0
Run Code Online (Sandbox Code Playgroud)
我认为他们的陷阱是有充分理由的,所以我想知道是否还有其他一些方法可以影响传输缓冲.
考虑以下数据模型:
class Model(models.Model):
"""A specific model of managed network switch. """
name = models.CharField(max_length=20)
port_count = models.IntegerField()
class Switch(models.Model):
"""A deployed instance of a managed network switch."""
model = models.ForeignKey(Model)
name = models.CharField(max_length=14)
class Port(models.Model):
"""A port on a deployed instance of a managed network switch."""
switch = models.ForeignKey(Switch)
number = models.IntegerField()
ip_address = models.GenericIPAddressField(
protocol='IPv4', verbose_name='IP address')
netmask = models.GenericIPAddressField(protocol='IPv4')
vlan = models.IntegerField(verbose_name='VLAN')
Run Code Online (Sandbox Code Playgroud)
我想要我的管理页面,以便在Switch下内联端口.所以我有:
class PortInLineAdmin(admin.TabularInline):
model = Port
extra = 8
max_num = 48
class SwitchAdmin(admin.ModelAdmin):
inlines = …Run Code Online (Sandbox Code Playgroud) 假设我已经编写了无数个 puppet 模块,并且我在一个 git 存储库中拥有它们的全部历史记录,但现在我真的希望为每个模块创建一个存储库。划分文件结构很容易,因为每个文件都完全包含在自己的目录中,并且组织方式类似于GIT_ROOT /modules/ NAME。
有没有一种方法可以分割这个存储库而不丢失每个模块的历史记录?理想情况下,每个存储库仅具有与其代表的模块相关的历史记录。我尝试克隆整个事物以及git rm -rf所有不相关但保留不相关历史的内容。
我计划用 git 子模块将它们重新粘在一起,FWIW。