小编qua*_*oid的帖子

如何配置 uwsgi 以将日志记录为 json(应用程序输出除外)

我正在使用这些选项(以及其他选项)围绕 Python Flask webapp 运行 uwsgi,以在标准输出上获取 JSON 编码的日志记录:

fmt=$'{"timestamp": "${strftime:%FT%TZ}", "level": "DEBUG", "name": "uwsgi", "message": "${msg}"}\n'

uwsgi --env="TZ=UTC" --log-encoder="json ${fmt}" --logformat="%(status) [%(msecs)ms] %(method) %(uri)"
Run Code Online (Sandbox Code Playgroud)

这很好地编码了来自 uwsgi 的标准输出,但不幸的是也编码了来自我的应用程序的日志记录,它已经是 JSON 格式,所以我得到如下内容:

{"timestamp": "2017-10-02T22:48:11Z", "level": "DEBUG", "name": "uwsgi", "message": "spawned uWSGI http 1 (pid: 75298)"}
{"timestamp": "2017-10-02T22:48:15Z", "level": "DEBUG", "name": "uwsgi", "message": "{\"timestamp\": \"2017-10-02T22:48:15.200Z\", \"message\": \"Descriptor requested\", \"request\": \"c6b08680-a7c3-11e7-9495-186590cba8eb\", \"name\": \"myapp.main\", \"level\": \"INFO\"}"}
{"timestamp": "2017-10-02T22:48:15Z", "level": "DEBUG", "name": "uwsgi", "message": "200 [11ms] GET /descriptor.json"}
Run Code Online (Sandbox Code Playgroud)

中间记录与 uwsgi 的其他输出使用相同的 JSON 编码。

如何避免 Flask 应用程序的输出被编码,但保持 uwsgi …

python logging uwsgi

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

Celery 工作流如何包含动态生成的组?

考虑这个 Celery 工作流程:

wf = collect_items.s() | add_details.s() | publish_items.s()
Run Code Online (Sandbox Code Playgroud)

它收集一些项目,并行地为每个项目添加额外的细节,然后在某处发布装饰信息。

我想要的是add_details作为一组任务,每个项目一个,并行获取每个项目的详细信息。显然,该组必须从 输出的数据中生成collect_items

这是我尝试过的,使用默认的 rabbitmq 代理:

app = Celery(backend="rpc://")

@app.task
def collect_items(n):
    return range(n)

@app.task
def add_details(items):
    return group(get_details.s(i) for i in items).delay()

@app.task
def get_details(item):
    return (item, item * item)

@app.task
def publish_items(items):
    print("items = %r" % items)
Run Code Online (Sandbox Code Playgroud)

我希望输出是数字 0-9,用它们的平方装饰,所有这些都是同时计算的:

>>> wf.delay(10).get()
items = [(0, 0), (1, 1), (2, 4), ... (8, 64), (9, 81)]
Run Code Online (Sandbox Code Playgroud)

这确实调用了预期的任务,但不幸的是,即使任务似乎已完成,也将结果publish_items作为一堆GroupResults包含AsyncResultsPENDING 状态传递给。

我等不及这些结果了,publish_items …

python celery

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

标签 统计

python ×2

celery ×1

logging ×1

uwsgi ×1