基于未来的ndb分片函数,用于在任何规模上遍历ndb对象,用于google app engine,python标准环境
im-futurendbsharded的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():
…
\includeheaders
您还需要接受函数中的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
,这使得调试更加容易。
这是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():
…
\includeheaders
您还需要接受函数中的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
,这使得调试更加容易。