在 Python App Engine API 中写入和读取 blobstore 文件以存储时间戳

2024-04-11

我正在使用 Google App Engine 的 python API,我想做的是从服务器加载文件列表,如果它已经过去了超过一个时间间隔(例如 1 小时)。

为此,我尝试将执行的最后一个操作小时存储到文件中,并在下次读取它以了解与下一个请求的当前执行时间的差异,但后来我发现GAE不允许将文件写入磁盘,所以我不得不使用 blobstore。我尝试将已有的相同函数组合在一起,但使用 blobstore 函数,但即使创建文件,每次我尝试读取它时都会收到一条错误消息:

FinalizationError: ApplicationError: 101 Blobkey not found.

我不确定我所做的事情是错误的。我对 GAE 还很陌生,不知道这是否是完成我需要做的事情的最佳方法,并且我在 GAE 文档中找不到在同一脚本中读取和写入文件的示例文件 API。

预先感谢您能给我的任何提示。

这是我的代码的摘要版本, get 和 set 函数与代码中的一样:

# imports...
from datetime import datetime as time
from google.appengine.api import files

# create file
last_request_file = files.blobstore.create()


def update_list(time_interval):
    # Get the time of the current request
    current_time = time.now()

    # Calculate timelapse between this an the last request
    last_request = get_last_request_time(last_request_file)
    elapsed_time = current_time - last_request

    # If more than an interval update proxy list
    if elapsed_time.total_seconds() >= time_interval:
        # Request new list from the server
        my_list = getList()

    # Update last_request time
    set_last_request(last_request_file)

    return my_ist


def get_last_request_time(file_name):
    request_time = None

    with files.open(file_name, 'r') as f:
        text_time = f.read()
        if text_time:
            request_time = time.strptime(text_time, '%Y-%m-%d %H:%M:%S')
        else: # file was empty
            request_time = time.min

    # Finalize to close the file.
    files.finalize(file_name)

    return request_time


def set_last_request_time(file_name):
    current_time = time.now()

    # Open the file and write to it
    with files.open(file_name, 'a') as f:
        f.write(time.strftime(current_time, '%Y-%m-%d %H:%M:%S')+'\n')

    # Finalize to close the file.
    files.finalize(file_name)

第一:为什么不将信息存储在任务队列中。您可以每小时运行一个任务队列来完成您的工作(获取列表)。

其次:只有在创建文件并写入文件时才使用 Finalize。但在文件完成后,您无法写入文件。要更新 blobstore 中的文件,您始终必须创建一个新文件。当您读取文件时,您不必最终确定它。要读取文件,您必须使用 blobreader。看:https://developers.google.com/appengine/docs/python/blobstore/blobreaderclass https://developers.google.com/appengine/docs/python/blobstore/blobreaderclass

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

在 Python App Engine API 中写入和读取 blobstore 文件以存储时间戳 的相关文章

随机推荐

  • Matlab 中行索引的笛卡尔积

    我有一个二进制矩阵A维度的mxn with m gt n在Matlab中 我想构造一个矩阵B维度的cxn按行列出包含在中的行索引的笛卡尔积的每个元素A 为了更清楚地考虑以下示例 例子 m 4 n 3 A 1 0 1 0 0 1 1 1 0
  • 如何解决 JDK 17 中 Field.setAccessible 的 InaccessibleObjectException?

    使用 JDK 17 不可能再使用反射来访问字段 至少对于java lang 课程 以下片段 final Process process new ProcessBuilder directory new File d temp command
  • 使用 Geoplugin 旋转链接

    我使用 geoplugin class 将 CA 用户重定向到特定链接 现在 该代码仅允许我将用户重定向到 1 个网站 我想修改此代码 以便我可以将用户重定向到 link1 com link2 com link3 com 有人对此有快速修改
  • copy.deepcopy 与 pickle

    我有一个小部件的树结构 例如集合包含模型 模型包含小部件 我想复制整个收藏 copy deepcopy与 pickle and de pickle 对象相比更快 但用 C 编写的 cPickle 更快 因此 为什么我 我们 不应该总是使用
  • iOS项目:静态/动态代码分析和调用图

    我正在寻找一些适用于 iOS 项目的方便的代码分析工具 尤其是 进行静态分析 动态分析并生成调用图 到目前为止 在我的调查中 我发现 dtrace 解释如下here https stackoverflow com questions 107
  • 如何在Python中使用编码utf-8.py代替cp1252.py

    我编写了一个非常小的程序 当该行包含某个字符串时 它将一个文件的所有行复制到另一个文件 这是完整的来源 f in open all txt r f out open all out w for line in f in if
  • 如何获取Windows 7主题名称

    Windows 7 附带多个内置主题 可以通过右键单击桌面并选择个性化来访问它们 在个性化下 有一个名为 航空主题 的部分 其中包含 建筑 自然 等主题 我尝试使用 uxtheme dll 的 GetCurrentThemeName 但它实
  • Java UDP 服务器,并发客户端

    下面的代码足以接受并发 UDP 传输吗 更具体地说 如果 2 个客户端同时传输 当我调用 receive 时 DatagramSocket 会将传输排队并一一传送它们 还是只有一个能够通过 DatagramSocket socket new
  • MySQL 将布尔字段计为两个不同的列

    认为我有一个包含两个字段的表 ID and State 状态值 即布尔值 可以是 0 或 1 ID不是唯一的 因此该表如下所示 ID State 1 true 1 false 2 false 3 true 1 true 现在 我想对按 ID
  • Python3.3 HTML Client TypeError: 'str' 不支持缓冲区接口

    import socket Set up a TCP IP socket s socket socket socket AF INET socket SOCK STREAM Connect as client to a selected s
  • Gradle 同步任务,同步到文件夹但忽略目标中的指定目录

    我想将驱动器上的一个文件夹与另一个包含我想要保留的名为 logs 的文件夹的文件夹同步 使困惑 这是一个图表 C mydir sync this folder someotherfiles txt anotherDir into this
  • c, obj c 没有标签或标识符的枚举

    我正在学习 cocos2d iPhone 上目标 C 的 open gl 包装器 现在玩精灵在一个示例中发现了这一点 enum easySprite 0x0000000a mediumSprite 0x0000000b hardSprite
  • 如何确定 akka 中生成的 actor 数量?

    我最近开始研究 Akka 2 0 框架 并且能够运行一些代码 生成执行简单 Oracle 数据库调用 执行简单计算等的 Actor 但是在生产中什么也没有 我想知道的是 是否有一般的经验法则或最佳实践来确定为某些类型的任务生成多少个参与者
  • 无法在同一页面设置PHP cookie

    我在同一页面上设置 cookie 时遇到问题 我在我的网站上使用了 cookie 它工作正常 我倾向于将 php 设置为单独的文件 现在 我在同一页面上设置 cookie 但它似乎不起作用 expire time 5 setcookie r
  • 如何使用 JSP 页面中的参数运行 java 类?

    我之前编写了一个从 bash 文件执行的 java 类 现在我需要使用 Javascript HTML 按钮允许它从 JSP 页面执行 我想知道如何做到这一点 首先 我的课程是这样的 public class Sync public sta
  • WCF .svc 文件在 IIS7.5 .NET 4.0 中用作纯文本 - 不在默认网站下

    最终更新 事实证明 由于 DotNetNuke 模块的压缩问题 这是一个转移注意力的问题 我必须添加到 PageBlaster DNN 模块 所以这不再是问题 我正在将 WCF svc 文件部署到我的实时网站 http www pokerd
  • 无法打开输入文件:localhost:8080

    在 Windows 上 要从命令提示符运行 PHP Web 服务器 我键入 php s localhost 80800 t public 我收到此错误 无法打开输入文件 localhost 8080 And yet cmd php test
  • 在 SQL 中使用累积需求时在聚合级别上优化表概览

    我试图找到最好的方法来获得累积显示的总体概述的概述 即通过扣除不满足每个步骤中的累积要求的观察结果 这是表脚本和示例数据 CREATE TABLE Table A id INTEGER NOT NULL PRIMARY KEY totalA
  • Spark 中的迭代缓存与检查点

    我有一个在 Spark 上运行的迭代应用程序 我将其简化为以下代码 var anRDD org apache spark rdd RDD Int sc parallelize 0 to 1000 var c Long Int MaxValu
  • 在 Python App Engine API 中写入和读取 blobstore 文件以存储时间戳

    我正在使用 Google App Engine 的 python API 我想做的是从服务器加载文件列表 如果它已经过去了超过一个时间间隔 例如 1 小时 为此 我尝试将执行的最后一个操作小时存储到文件中 并在下次读取它以了解与下一个请求的