我有一个简单的应用程序,我试图重定向favicon每个:
http://flask.pocoo.org/docs/0.10/patterns/favicon/
app = flask.Flask(__name__)
app.add_url_rule('/favicon.ico', redirect_to=flask.url_for('static', filename='favicon.ico'))
Run Code Online (Sandbox Code Playgroud)
但这失败了:
RuntimeError: Attempted to generate a URL without the application context being pushed. This has to be executed when application context is available.
Run Code Online (Sandbox Code Playgroud)
所以,猜测,我试试这个:
app = flask.Flask(__name__)
with app.app_context():
flask.current_app.add_url_rule('/favicon.ico', redirect_to=flask.url_for('static', filename='favicon.ico'))
Run Code Online (Sandbox Code Playgroud)
但得到一个不同的错误:
RuntimeError: Application was not able to create a URL adapter for request independent URL generation. You might be able to fix this by setting the SERVER_NAME config variable.
Run Code Online (Sandbox Code Playgroud)
到底是怎么回事?
Flask日志记录(即app.logger.info(...)等)的问题在于子模块不使用它,所以在我看来,全局配置应用程序日志记录的唯一方法是通过底层python日志记录机制:例如,
logging.config.fileConfig('config/logging.conf')
Run Code Online (Sandbox Code Playgroud)
但是这不配置Flask的默认处理程序,因此例如,未配置HTTP日志记录.所以我得到混合日志:
2015-07-28 14:57:47,320 [main.py][INFO] Starting... # Python log
[2015-07-28 14:58:49] "GET /demo HTTP/1.1" 200 956 0.318825 # Flask log
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议通过配置文件全局配置日志记录的标准做法(即,以便我可以轻松配置单个包).
此外,我似乎无法将HTTP日志记录(GET等)移除到stderr(我认为它来自werkzeug); 设置logging.getLogger('werkzeug').setLevel()仅影响与HTTP日志记录无关的werkzeug日志.
谢谢.
我正在尝试使用带有App Engine的JDO和Maven配置创建一个简单的测试.
我的编译和数据增强步骤成功.但是在运行时(mvn:test和appengine:devserver)我得到:
1) Error in custom provider, javax.jdo.JDOFatalInternalException:
Class "com.google.appengine.datanucleus.DatastoreManager" was not found in the CLASSPATH.
Please check your specification and your CLASSPATH.
Run Code Online (Sandbox Code Playgroud)
但是,我的类路径(target/demo/WEB-INF/lib)确实包含:datanucleus-appengine-2.1.1.jar
我的依赖关系与Google datanucleus项目的POM中指定的依赖关系相同:
<dependency>
<groupId>javax.jdo</groupId>
<artifactId>jdo-api</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-core</artifactId>
<version>[3.1.1, 3.2)</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-api-jdo</artifactId>
<version>[3.1.1, 3.2)</version>
</dependency>
<dependency>
<groupId>com.google.appengine.orm</groupId>
<artifactId>datanucleus-appengine</artifactId>
<version>2.1.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
感谢任何建议.
RB
假设我有一个依赖于大模块 X 的 celery worker。
由于任务定义需要对工作应用定义的引用(例如,@app.task),这意味着我的“客户端”(调度任务的代码)也需要依赖于这个模块。
这对我来说没有意义——我弄错了吗?
一种)。我不希望我的任务调用者具有这些依赖项(例如,它们可能位于不同的 docker 容器中)。
B)。出于安全原因,我不希望我的任务调用者访问此代码。
有办法解决吗?
谢谢,
RB
假设我正在创建一个包含多个文件的ES6库,但是有一个包含所有顶级定义的根文件.我怎么能实现这样的例子:
lib/foo/sub.js
export class Sub{}
lib/main.js
import { Sub } from './foo/sub'
client.js
# This doesn't work.
import { Sub } from 'lib/main'
Run Code Online (Sandbox Code Playgroud)
即,客户端仅从顶级文件导入(因为子级别是实现细节 - 稍后可能会封装到单个缩小文件中(但在开发时是在多个文件中).
如何获得与协议缓冲区字段关联的选项?
例如,假设我有一个带有自定义选项的字段:
message Foo {
optional string title = 1 [(indexed) = true];
}
Run Code Online (Sandbox Code Playgroud)
我可以获得字段列表:
for f in foo.ListFields():
print f
Run Code Online (Sandbox Code Playgroud)
如何访问“已建立索引”状态?(我可以看到有一个f“ _options”列表,但看起来是“ internal”?是否有按名称访问选项扩展的正确方法)?
flask ×2
celery ×1
datanucleus ×1
ecmascript-6 ×1
import ×1
jdo ×1
maven ×1
python ×1
werkzeug ×1