我有几个 rST 页面,它们遵循相同的框架,但在某些地方具有不同的值和段落。
理想情况下,我会想象这样的事情(简化的例子):
page-model.rst
Feature {% block title %}Index{% endblock %}
============================================
{% block description %}
Not available.
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
进而:
page-1.rst
{% extends "page-model.rst" %}
{% block title %}Load{% endblock %}
{% block description %}
Load data from hard disk.
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
这可以开箱即用吗?
我应该在生成文档之前自己破解一些东西来运行 Jinja 吗?或者定义我自己的指令?
这是一个坏主意吗?:)
感谢您的见解!
如何使用 asyncio 在两个协程之间实现管道,一个协程从流中读取,另一个向其中写入?
假设我们有这个现有代码,两个简单的脚本。生成标准输出的一个:
# produce.py
import asyncio
import random
import sys
async def produce(stdout):
for i in range(10000):
await asyncio.sleep(random.randint(0, 3))
print(i, file=stdout, flush=True)
if __name__ == "__main__":
loop = asyncio.get_event_loop()
loop.run_until_complete(produce(sys.stdout))
loop.close()
Run Code Online (Sandbox Code Playgroud)
另一个从标准输入读取:
# consume.py
async def consume(loop, stdin):
reader = asyncio.StreamReader(loop=loop)
reader_protocol = asyncio.StreamReaderProtocol(reader)
await loop.connect_read_pipe(lambda: reader_protocol, stdin)
while True:
line = await reader.readline()
if not line:
break
print(int(line) ** 2)
if __name__ == "__main__":
loop = asyncio.get_event_loop()
loop.run_until_complete(consume(loop, sys.stdin))
loop.close()
Run Code Online (Sandbox Code Playgroud)
显然,由于我们的两个部分可以从命令行单独运行,因此我们可以使用subprocess带有 shell 管道 ( …