我有一个在容器内运行的 Flask 应用程序,我在其中设置了日志记录StreamHandler(),因此日志被发送到标准输出。
当我的uwsgi.ini文件包含将日志重定向到文件的语句(通过使用logto)时,来自应用程序的日志可在与 uWSGI 日志混合的日志文件中使用(正如预期的那样)。
但是当我从logto-uwsgi.ini因为我希望将这些日志发送到 Docker 容器标准输出时,只有 uWSGI 日志在 docker 容器日志中可见,而应用程序日志则不可见。(uWSGI 日志甚至之前就在那里)
uwsgi.ini:
[uwsgi]
base = /app_home/app
wsgi-file = /app_home/app/wsgi.py
callable = app
socket = /tmp/uwsgi.sock
chmod-socket = 666
# Log directory - we needed this to be turned off, so the logs are sent to STDOUT
# logto = /var/log/uwsgi/app.log
vacuum = true
master = true
processes = 3
enable-threads = true
uid = app
gid = …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Android的Python绑定构建Tensorflow核心 - 从Android中的Kivy应用程序中使用,但不确定如何使Python绑定工作.
为Android编译Tensorflow核心可以使用以下内容:
bazel build -c opt \
--crosstool_top=//external:android/crosstool \
--cpu=armeabi-v7a \
--host_crosstool_top=@bazel_tools//tools/cpp:toolchain \
--verbose_failures \
//tensorflow/core:android_tensorflow_lib
Run Code Online (Sandbox Code Playgroud)
有人知道如何添加Python绑定吗?这甚至可能吗?
我已经阅读过这些文档,进行了大量的搜索,但没有找到任何关于此的内容.我看到很多其他人也有兴趣让Tensorflow在Kivy上工作(适用于Android和iOS),但到目前为止似乎没有人这样做过.人们只能说我们需要构建一个python-for-android配方,但配方的第一步是使用Python绑定为Android构建,因此上面的问题.
我正在尝试从Logitech C920网络摄像头实时播放本地.H264网络摄像头,从Odroid设备(机器人)通过运行在单独服务器(CentOS 7.1)上的ffserver到用户浏览器,而无需重新连接.H264视频源.
在浏览器中使用实时视频源是一项挑战,所以现在我只是想让Odroid上的Logitech C920网络摄像头通过ffserver将其原生的.H264实时视频源流式传输到用户而无需用户在此过程中重新编码视频.显然,我想避免重新编码,因为这会花费太多CPU时间并且会杀死实时视频源.稍后我可能需要将容器更改为.flv或rtp,因此可以通过浏览器以实时方式播放.我正在使用Logitech C920网络摄像头,因为它可以在硬件上进行.H264编码.(它已经通过直接保存文件进行了测试,除了与Linux内核错误相关的众所周知的"急躁"问题外,它还可以运行:http://sourceforge.net/p/linux-uvc/mailman/message/33164469/,但这是一个不同的故事)
问题是,然而我设置了ffmpeg-ffserver,只要ffserver在图片中,feed就会被重新编码 - 甚至从h264(本机)到h264(libx264) - 在Odroid设备上占用100%的CPU并引入视频输入有很大的延迟.
下面是我的ffmpeg和ffserver设置.
来自Odroid设备的Ffmpeg将.H264源流式传输到ffserver
$ ffmpeg -s 1920x1080 -f v4l2 -vcodec h264 -i /dev/video0 -copyinkf -vcodec copy http://xxxyyyy.com:8090/feed1.ffm
ffmpeg version N-72744-g653bf3c Copyright (c) 2000-2015 the FFmpeg developers
built with gcc 4.8 (Ubuntu/Linaro 4.8.2-19ubuntu1)
configuration: --prefix=/home/odroid/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/home/odroid/ffmpeg_build/include --extra-ldflags=-L/home/odroid/ffmpeg_build/lib --bindir=/home/odroid/bin --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree
libavutil 54. 27.100 / 54. 27.100
libavcodec 56. 41.100 / 56. 41.100
libavformat 56. 36.100 / …Run Code Online (Sandbox Code Playgroud) 我想在 Python 的日志记录模块生成的日志中添加自上次输入日志以来经过的时间(秒/毫秒)。
这很有用,因此您可以查看日志文件以查看同一步骤是否总是花费相同的时间或发生变化,这表明环境中的某些内容发生了变化(例如数据库性能)。
我知道 %(relativeCreated)d,但这仅显示自记录器启动以来经过的时间,而不是自创建最后一个日志以来经过的时间。基本上 %(relativeCreated)d 是累积值,我想看到的是每个 %(relativeCreated)d 之间的差异。
这就是你用 %(relativeCreated)d 得到的:
2015-07-20 12:31:07,037 (7ms) - INFO - Process started....
2015-07-20 12:31:07,116 (87ms) - INFO - Starting working on xyz
2015-07-20 12:31:07,886 (857ms) - INFO - Progress so far
Run Code Online (Sandbox Code Playgroud)
这就是我需要的:
2015-07-20 12:31:07,037 (duration: 7ms) - INFO - Process started....
2015-07-20 12:31:07,116 (duration: 80ms) - INFO - Starting working on xyz
2015-07-20 12:31:07,886 (duration: 770ms) - INFO - Progress so far
Run Code Online (Sandbox Code Playgroud) 我有一个在docker容器中运行的烧瓶应用程序.一切正常,除非我想在烧瓶外壳的同一个docker容器中做一些手工作业.问题是url_for(x, _external=True)始终返回https:// localhost,无论我如何尝试在shell中设置服务器名称.我显然已经尝试将SERVER_NAME设置为无变化.
$ python manage.py shell
>>> from flask import current_app
>>> current_app.config['SERVER_NAME'] = 'example.com'
>>> from app import models
>>> models.Registration.send_registration(id=123)
Run Code Online (Sandbox Code Playgroud)
jinja模板有:
{{ url_for('main.index', _external=True, _scheme='https') }}
我想得到:https: //example.com
我使用的是Flask 0.11,Werkzeug 0.11.10和Jinja2 2.8