静态文件application_可读用法

2024-04-15

我一直在尝试了解 application_read 静态 url 处理程序字段的工作原理。我使用的是 SDK 版本 1.7.7,并且我已在开发环境中的应用程序上将其设置为 true,但我似乎无法实际读取该文件:

# app.yaml

- url: /test
  static_dir: application/static/test
  application_readable: true

# app.py

path = os.path.join(os.path.split(__file__)[0], 'static/test/test.png')
self.response.out.write('Looking for %s...' % path)
self.response.out.write(os.path.exists(path))
self.response.out.write("\n")
path = '/application/static/test/test.png'
self.response.out.write('Looking for %s...' % path)
self.response.out.write(os.path.exists(path))
self.response.out.write("\n")
path = 'application/static/test/test.png'
self.response.out.write('Looking for %s...' % path)
self.response.out.write(os.path.exists(path))
self.response.out.write("\n")
path = '/static/test/test.png'
self.response.out.write('Looking for %s...' % path)
self.response.out.write(os.path.exists(path))
self.response.out.write("\n")
path = 'static/test/test.png'
self.response.out.write('Looking for %s...' % path)
self.response.out.write(os.path.exists(path))
self.response.out.write("\n")
path = '/test/test.png'
self.response.out.write('Looking for %s...' % path)
self.response.out.write(os.path.exists(path))
self.response.out.write("\n")
path = 'test/test.png'
self.response.out.write('Looking for %s...' % path)
self.response.out.write(os.path.exists(path))
self.response.out.write("\n")
path = '/test.png'
self.response.out.write('Looking for %s...' % path)
self.response.out.write(os.path.exists(path))
self.response.out.write("\n")
path = 'test.png'
self.response.out.write('Looking for %s...' % path)
self.response.out.write(os.path.exists(path))

但这些都不起作用:

Looking for /vagrant/test/application/static/test/test.png...False
Looking for /application/static/test/test.png...False
Looking for application/static/test/test.png...False
Looking for /static/test/test.png...False
Looking for static/test/test.png...False
Looking for /test/test.png...False
Looking for test/test.png...False
Looking for /test.png...False
Looking for test.png...False

尽管该文件确实存在:

vagrant@precise64:/vagrant/kissyface$ ls -l /vagrant/test/application/static/test/test.png
-rwxrwxrwx 1 vagrant vagrant 9920 May  3 18:13 /vagrant/test/application/static/test/test.png

谁能告诉我我做错了什么?除了 statis url handler 文档中的简短描述和 appengine sdk 1.7.6 变更日志中的提及之外,我无法找到任何文档或示例代码。是否有一个实用程序类提供对这些文件的访问,或者我完全误解了 application_read 实际应该做什么?


Overview

有点难以推理出什么exactly你的系统上正在发生这种情况,但我可以告诉你我的系统上发生了什么。我们可以整天猜测可能出了什么问题,但是实施一些可行的方法并逆向工作通常比猜测更有成效;它可以是任何东西。

如果我猜的话,我会说问题是:

  1. 处理程序顺序不正确
  2. 搞砸了 python 路径
  3. 搞砸了 python 版本
  4. 使用蹩脚的旧 SDK
  5. 内裤侏儒

如果您实现了我在下面概述的项目,而不是猜测,那么向后推理并找出它不适合您的原因应该非常简单。如果这个项目不起作用,你就需要做一些工作。这个问题真的很糟糕(我不想帮你解决它)。如果它确实有效,那么您很幸运,因为您只需 5 或 10 分钟即可让其余代码也正常工作!

使用最新的 python appengine SDKhttp://code.google.com/p/googleappengine/downloads/list http://code.google.com/p/googleappengine/downloads/list:

google_appengine_1.8.0.zip
71b5f3ee06dce0a7d6af32d65ae27272eac038cb

项目文件及其内容:

目录设置:

.
├── app.py
├── app.pyc
├── app.yaml
└── static
    └── hi.txt

app.py:

import webapp2
import os

class MainPage(webapp2.RequestHandler):
    def get(self):
        self.response.headers['Content-Type'] = 'text/plain'
        self.response.out.write('Hello, webapp World!\n\n')

        path = os.path.join(os.path.split(__file__)[0], 'static/hi.txt')
        self.response.out.write(open(path).readlines()[0])

application = webapp2.WSGIApplication([('/.*', MainPage)])

app.pyc 是该文件的(自动)编译版本。

应用程序.yaml:

application: myapp
version: 1
runtime: python27
api_version: 1
threadsafe: yes

handlers:
- url: /static
  static_dir: static
  application_readable: true
- url: /.*
  script: app.application

静态/hi.txt:

Ezra can see this text fine; I'm not sure why you can't... Hi!

会发生什么:

从项目根目录启动网络服务器:

 dev_appserver.py --port 80 .

您可能必须使用不同的端口号;没什么大不了的。只需根据您选择的内容调整以下说明即可。

参观http://localhost/在浏览器中:

HTTP 响应:

INFO     2013-05-14 09:45:57,372 server.py:585] default: "GET / HTTP/1.1" 200 85

浏览器输出:

你好,webapp世界!

以斯拉可以清楚地看到这段文字;我不知道为什么你不能...嗨!

参观http://localhost/static/hi.txt在浏览器中:

HTTP 响应:

INFO     2013-05-14 09:48:42,785 server.py:585] default: "GET /static/hi.txt HTTP/1.1" 200 63

浏览器输出:

以斯拉可以清楚地看到这段文字;我不知道为什么你不能...嗨!

打破它:

如果我删除application_readable: trueapp.yaml 中的行:

参观http://localhost/在浏览器中:

HTTP 响应:

ERROR    2013-05-14 09:51:13,290 webapp2.py:1528] [Errno 13] file not accessible: '.../static/hi.txt'

浏览器输出:

500内部服务器错误

服务器出错或无法执行请求的操作。

接下来做什么:

希望你能从这个例子开始倒推。如果它对你不起作用,你就注定失败。享受度过一个阳光明媚的五月中旬下午,在小路上搜寻并尝试(重新/卸载)安装东西以使这该死的事情继续下去。顶部的列表是我尝试的列表,不知道任何细节并排除了编程错误。祝你好运!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

静态文件application_可读用法 的相关文章

  • python 中的并行处理

    在 python 2 7 中进行并行处理的简单代码是什么 我在网上找到的所有示例都很复杂 并且包含不必要的代码 我该如何做一个简单的强力整数分解程序 在每个核心 4 上分解 1 个整数 我真正的程序可能只需要2个核心 并且需要共享信息 我知
  • 删除 Django 1.7 中的应用程序(和关联的数据库表)

    是否可以使用 Django 1 7 迁移来完全删除 卸载应用程序及其所有跟踪 主要是其所有数据库表 如果没有 在 Django 1 7 中执行此操作的适当方法是什么 python manage py migrate
  • 如何在Python中同时运行两只乌龟?

    我试图让两只乌龟一起移动 而不是一只接着另一只移动 例如 a turtle Turtle b turtle Turtle a forward 100 b forward 100 但这只能让他们一前一后地移动 有没有办法让它们同时移动 有没有
  • 在 Django OAuth Toolkit 中安全创建新应用程序

    如何将 IsAdminUser 权限添加到 Django OAuth Toolkit 中的 o applications 视图 REST FRAMEWORK DEFAULT PERMISSION CLASSES rest framework
  • 如何使用文本相似性删除 pandas 数据框中相似(不重复)的行?

    我有数千个数据 这些数据可能相似也可能不相似 使用 python 的默认函数 drop duplicates 并没有真正的帮助 因为它们只检测相似的数据 例如 如果我的数据包含类似以下内容怎么办 嗨 早上好 嗨 早上好 Python 不会将
  • 如果在等待“read -s”时中断,在子进程中运行 bash 会破坏 tty 的标准输出吗?

    正如 Bakuriu 在评论中指出的那样 这基本上与BASH 输入期间按 Ctrl C 会中断当前终端 https stackoverflow com questions 31808863 bash ctrlc during input b
  • pytest:同一接口的不同实现的可重用测试

    想象一下我已经实现了一个名为的实用程序 可能是一个类 Bar在一个模块中foo 并为其编写了以下测试 测试 foo py from foo import Bar as Implementation from pytest import ma
  • .pyx 文件出现未知文件类型错误

    我正在尝试构建一个包含 pyx 文件的 Python 包 pyregion 但在构建过程中出现错误 检查以下输出 python setup py build running build running build py creating b
  • 使用Python计算目录的大小?

    在我重新发明这个特殊的轮子之前 有没有人有一个很好的例程来使用 Python 计算目录的大小 如果例程能够很好地以 Mb Gb 等格式格式化大小 那就太好了 这会遍历所有子目录 总结文件大小 import os def get size s
  • 通过索引访问Python字典的元素

    考虑一个像这样的字典 mydict Apple American 16 Mexican 10 Chinese 5 Grapes Arabian 25 Indian 20 例如 我如何访问该字典的特定元素 例如 我想在对 Apple 的第一个
  • 从Android客户端登录appengine

    我正在尝试登录应用程序引擎并访问应用程序引擎中的用户服务API 基本上我希望能够看到谁登录了我的 servlet 我正在使用从 android 获取 authtoken 然后从应用程序引擎获取 ASID 或 SACID cookie 的身份
  • 使用 Pandas 计算 delta 列

    我有一个数据框 如下所示 Name Variable Field A 2 3 412 A 2 9 861 A 3 5 1703 B 3 5 1731 A 4 0 2609 B 4 0 2539 A 4 6 2821 B 4 6 2779 A
  • 返回表示每组内最大值的索引的一系列数字位置

    考虑一下这个系列 np random seed 3 1415 s pd Series np random rand 100 pd MultiIndex from product list ABDCE list abcde One Two T
  • 在 keras 中保存和加载权重

    我试图从我训练过的模型中保存和加载权重 我用来保存模型的代码是 TensorBoard log dir output model fit generator image a b gen batch size steps per epoch
  • 在系统托盘中隐藏 tkinter 窗口 [重复]

    这个问题在这里已经有答案了 我正在制作一个程序来提醒我朋友的生日 这样我就不会忘记祝福他们 为此 我制作了两个 tkinter 窗口 1 First one is for entering name and birth date 2 Sec
  • 动态过滤 pandas 数据框

    我正在尝试使用三列的阈值来过滤 pandas 数据框 import pandas as pd df pd DataFrame A 6 2 10 5 3 B 2 5 3 2 6 C 5 2 1 8 2 df df loc df A gt 0
  • TKinter 中的禁用/启用按钮

    我正在尝试制作一个像开关一样的按钮 所以如果我单击禁用按钮 它将禁用 按钮 有效 如果我再次按下它 它将再次启用它 我尝试了 if else 之类的东西 但没有成功 这是一个例子 from tkinter import fenster Tk
  • 将上下文管理器的动态可迭代链接到单个 with 语句

    我有一堆想要链接的上下文管理器 第一眼看上去 contextlib nested看起来是一个合适的解决方案 但是 此方法在文档中被标记为已弃用 该文档还指出最新的with声明直接允许这样做 自 2 7 版起已弃用 with 语句现在支持此
  • 查找总和为给定数字的值组合的函数

    这个帖子查找提供的 Sum 值的组合 https stackoverflow com a 20194023 1561176呈现函数subsets with sum 它在数组中查找总和等于给定值的值的组合 但由于这个帖子已经有6年多了 我发这
  • Apache Beam Pipeline 写表后查询表

    我有一个 Apache Beam Dataflow 管道 它将结果写入 BigQuery 表 然后我想查询该表以获取管道的单独部分 但是 我似乎无法弄清楚如何正确设置此管道依赖性 我编写的新表 然后想要查询 与一个单独的表连接以进行某些过滤

随机推荐

  • 用于进行修改的 git 工作流程,您永远不会将其推回原点

    我正在构建一个 iPhone 应用程序PhoneGap http phonegap com 其中有一个 Git 存储库 我想在我自己的 Git 存储库中跟踪对 PhoneGap 代码的更改 主要是向 www 目录添加文件 同时能够从 Pho
  • GitHub、Gerrit、Hudson(Jenkins) 工作流程

    我刚刚开始一起使用 GitHub Gerrit 和 Hudson Jenkins 我需要一些关于工作流程的想法 我们想使用 GitHub 作为我们的主要远程存储库 我们希望主要使用 Gerrit 进行代码审查 但也用于 Hudson 中的构
  • 如何运行 Webpack 开发服务器 --https --hot --inline

    使用 CLI 配置时 有没有办法在 https 上运行 webpack dev server 问题是连接到socket io结束了http并不是https 存在解决方法 但非常烦人 手动包含https webpack dev server在
  • Scala - 以函数方式修改字符串

    我刚刚开始使用 Scala 因此开始以更实用的方式做事 只是想知道是否有一种更实用的方法来实现如下所示的功能 def expand exp String String var result exp for k v lt libMap res
  • Python/Django 中的音频波形可视化

    我已经在 Stack Overflow 上寻找这个问题的答案 但似乎没有地方给出正确的答案或方向 我的项目将允许用户上传 WAV 最终将在服务器上使用 FFmpeg 将其转换为低质量 MP3 并将全部存储在 Amazon S3 上并提供服务
  • asp.net mvc - ActionLink 的渲染不一致

    我有一个控制器 它接受以下两种格式的 URL 网络 添加或编辑 gt 在页面上呈现空白表单以添加新的网络对象 网络 AddOrEdit id gt 使用预填充表单呈现页面以编辑网络对象 带有 ID id 显然 每个实例中都使用相同的视图 我
  • 在 JavaScript 中逐行动态添加字幕到视频元素

    我想知道目前是否可行 下面是我的 HTML
  • Chrome DevTools 中缺少“添加到主屏幕”链接

    使用 Google 服务可能会令人沮丧 他们有令人难以置信的文档 但文档总是假设一切正常 如果有什么东西不像广告上说的那样有效 那你就完全靠自己了 没有错误消息 没有解决问题的帮助 甚至没有承认某些事情可能不起作用 以防万一 添加到主屏幕
  • 如何检索 C99 可变参数宏的最后一个参数?

    Visual Studio 失败的 static assert 错误消息完全由错误代码和 static assert 的第二个参数组成 没有任何其他消息表明这是静态断言失败 我想做一个宏来解决这个问题 例如 作为第一次尝试 define S
  • Winforms MVP

    我主要有 ASP Net 背景 懂一些 MVC 我也做了一些 Silverlight 和 MVVM 但是我现在即将转向 Winforms 我对它的经验很少 所以我想知道如何处理 MVP 典型的 MVP 示例显示演示者设置视图属性 通过某种
  • 如何从表中选择除最后 100 条之外的所有记录

    我有一个存储客户记录的数据库 我想设置一个 cron 作业来定期覆盖这些记录 我想说 Select from ORDERS where ORDER ID 不在列表的前 100 名中 每行都有自己的 order id 最新的 order id
  • 多个App服务使用同一个域名

    我们有一个场景 我们有多个 azure 应用程序服务 并且部署了 Web API 但是我们需要所有应用程序服务使用相同的域名 而不是子域 例如http example com api1 http example com api1在一个应用程
  • Postgres:在一项选择中获取最小值、最大值、聚合值

    我正在使用 Postgresql 8 4 我有一个这样的表 type value 1 5 2 6 1 4 3 10 我想写一个选择 它将给我最小值和最大值 以及所有类型的聚合integer 期望的结果应该是 min max types 4
  • SQL 连接具有特定条件的两个表

    表A结构 表B结构 上面是两个表 TableB TableARelationID是一个relationID 用于映射表A 期望的输出 期望的结果将采用 TableA RecordID 和 TableB Text 但仅采用表 B 中的类型 2
  • 在Python中不使用全局变量跟踪递归调用的数量

    如何在 Python 中不使用全局变量来跟踪递归调用的次数 例如 如何修改以下函数来跟踪调用次数 def f n if n 1 return 1 else return n f n 1 print f 5 这是一个不使用全局的巧妙技巧 您可
  • 使用 PHP Curl 发布数据并检索响应?

    我对使用网络服务非常陌生 所以我发现这很令人困惑 如果我有一个 URL 我想向其发布一些 JSON 数据 我知道如何使用 CURL PHP 方法来执行此操作 我想知道的是 如果我这样做 并且 URL 有某种服务器响应 我如何在我的 php
  • 如何选择30天的数据?

    我有疑问 SELECT name FROM SELECT name FROM Hist answer WHERE id city 34324 AND datetime gt DATE SUB CURRENT DATE INTERVAL 1
  • 如何列出导入的模块?

    如何枚举所有导入的模块 例如 我想得到 os sys 从这段代码 import os import sys import sys sys modules keys 仅获取当前模块的所有导入的近似方法是检查globals https docs
  • 来自 MDTool 的 .IPA 文件

    如何让 MDTool 为我的 MonoTouch 项目创建 IPA 文件 当我从 MonoDevelop GUI 应用程序中构建时 会创建 IPA 文件 But mdtool build configuration AppStore iPh
  • 静态文件application_可读用法

    我一直在尝试了解 application read 静态 url 处理程序字段的工作原理 我使用的是 SDK 版本 1 7 7 并且我已在开发环境中的应用程序上将其设置为 true 但我似乎无法实际读取该文件 app yaml url te