用于在google app engine、python标准环境中缓存到gcs的decorator

im-gcscacher的Python项目详细描述


#appengine task utils
这是appengine任务utils库的repo。它生成appenginetaskutils包

您可以在[此处]联机找到该包(https://pypi.python.org/pypi/appengineaskutils)。

您还需要设置自动售货机,请参见[此处的应用程序引擎自动售货机说明](https://cloud.google.com/app engine/docs/python/tools/using-libraries-python-27)。

此decorator函数设计用于替换[延迟](https://cloud.google.com/appengine/articles/deferred)。


对于taskutils.task,您需要将以下内容添加到app.yaml和/或\<;servicename \>;.yaml文件:

handlers:
-url://u ah/task/*
script:taskutils.app
login:admin


此规则为任务创建一个通用处理程序,以便将工作延迟到后台推送任务。

您的模块如下:

from taskutils import task


做一些事情…

只需正常调用函数,例如:



这是可能的,因为使用了[yccloudpickle](https://medium.com/the infinite machine/python-function-serialization-with-yccloudpickle-b2ff6b2ad5da.zei3n0ibu)作为底层序列化库。

包括其他函数:

def myouterfunction(mapf):

@task
def myinnerfunction(objects):
对于对象中的对象:
mapf(object)

…获取一些对象列表…
对于objects列表中的对象:
myinnerFunction(对象)


def dosomethingWithObject(对象):
…对某个对象执行操作…



正在后台对函数和参数进行序列化和反序列化。

将后台任务排队时,应用程序引擎任务和任务队列库可以接受一组参数。您可以将这些传递给装饰器:

@task(queue=“myqueue”,countdown=5)
def anotherfunction():
…做一些事情…

在**类google.appengine.api.taskqueue.task(payload=none,\*\*kwargs)**下,[此处](https://cloud.google.com/appengine/docs/python/refdocs/google.appengine.api.taskqueue)提供了任务所允许的参数的详细信息。task decorator支持两个额外的函数,具体如下。


做一些事情……

somefunction task=task(somefunction,queue=“myqueue”)


然后,当您准备好时可以调用task返回的函数:


somefunctiontask(1,2)


您也可以同时执行这两个步骤:



task(somefunction,queue=“myqueue”)(1,2)

例如:

@task(transactional=true)
def myserioustransactionaltask():


您还需要接受函数中的headers参数。

@task(includeheaders=true)
def myfunctionwithheaders(amount,headers):
…Stuff…

MyFunctionWithHeaders(10)


App Engine将有用信息以标题形式传递给您的任务,例如x-app engine-taskretrycount。


但是@task使用了一个形式为/\&ah/task/\<;module\>;/\<;function\>;的url,例如:

///u ah/task/mymodule/somefunction


,这使得调试更加容易。









欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
servlets Java EE+GlassFish:如果用户在其他地方登录,则强制用户注销   java在不更改源代码的情况下添加钩子   安卓 Java TextView Onclick()返回表达式错误   java Excel文件未使用Apache存储内部内存   java getRowCount()和getSelectedColumn()不起作用   无法在java中生成视图绑定。util。Android Gradle插件2.1的NoTouchElementException   Java中的类型转换运算符百分比计算为零   主java中的调用方法   java在Javasound中播放多个示例   java如何知道webDriver成功打开URL   java jmock,每次调用时返回新对象   eclipse使用Java在Selenium WebDriver中生成可执行文件   macos捆绑Java OS X应用程序默认为MacRoman编码   java我应该把我的休息网关变成一个图书馆吗?   java Eclipse插件:查找包含子字符串的行号无效   Java IOException:在Linux上发送UDP数据包时没有可用的缓冲区空间   java无法解析jaxbxjc2中的名称“xjc:globalJavaType”。2.52.罐子   java是否有HibernateAPI来检查是否创建了数据库?