【问题标题】:Flask-Uploads not generating url inside celery taskFlask-Uploads 不在 celery 任务中生成 url
【发布时间】:2016-01-09 00:34:23
【问题描述】:

以前在我的 python 烧瓶应用程序中我可以使用

photos.url("图片名称")

没有任何问题。但是在我的项目中更新了几个库后,Celery 抛出异常

RuntimeError: 应用程序无法为 请求独立的 URL 生成。您可以通过以下方式解决此问题 设置 SERVER_NAME 配置变量。

我的配置中没有 SERVER_NAME,但我不需要。它以前在没有这个配置的情况下工作,所以我希望它现在应该可以工作。有谁知道我错过了什么?

【问题讨论】:

    标签: python-2.7 flask celery flask-uploads


    【解决方案1】:

    Celery 可能试图在请求上下文之外运行任务,因此它不知道如何正确生成 URL。 See the docs:

    Setting a SERVER_NAME also by default enables URL generation without a request context but with an application context.

    如果您对服务器 URL 进行硬编码,则可以在请求上下文之外生成带有 url_for 的 URL。

    【讨论】:

    • 我尝试添加像 SERVER_NAME = "localhost:5000" 这样的服务器名称并使用此 run_simple('0.0.0.0', 5000, application, use_reloader=True, use_debugger=True) 运行应用程序,但随后没有我的项目资产正在加载。
    • 他们怎么没有加载?浏览器试图加载什么资产路径?我自己做了这个,当我做类似url_for('static', filename='images/favicon.png')的事情时,资产路径仍然很好
    • 所以我认为问题在于我使用的是 SERVER_NAME = "127.0.0.1:5000" 而不是 SERVER_NAME = "localhost:5000" 。使用 127.0.0.1 时,我在 chrome 上缺少 csrf_token但它在 Firefox 中运行良好。我在这里找到了关于这个问题的问题stackoverflow.com/questions/30134427/…
    • 太棒了!如果对您有帮助,请随时检查此答案:)
    猜你喜欢
    • 2017-03-27
    • 2018-03-25
    • 2019-05-25
    • 1970-01-01
    • 2012-08-16
    • 1970-01-01
    • 1970-01-01
    • 2017-06-27
    • 1970-01-01
    相关资源
    最近更新 更多