Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用Google任务队列API安排任务?_Python_Django_Google App Engine - Fatal编程技术网

Python 如何使用Google任务队列API安排任务?

Python 如何使用Google任务队列API安排任务?,python,django,google-app-engine,Python,Django,Google App Engine,我想安排一个任务(即一段代码)在以后执行,其中执行的时间和日期以及其他参数作为任务负载传入 因此,我们有一个基于Python(Django)的Appengine应用程序,其中: 任务在tasks.py中定义 @csrf_exempt def task_myfunction(request): if request.method == 'POST': # Read POST parameters # Perform task return HttpRespo

我想安排一个任务(即一段代码)在以后执行,其中执行的时间和日期以及其他参数作为任务负载传入

因此,我们有一个基于Python(Django)的Appengine应用程序,其中:

任务在tasks.py中定义

@csrf_exempt
def task_myfunction(request):
    if request.method == 'POST':
      # Read POST parameters
      # Perform task
    return HttpResponse("Success")
有效负载被添加到views.py中的队列中,并且有效负载被发布到提供的url,该url映射到上面定义的函数

from google.appengine.api import taskqueue

# ..Somewhere inside a view..
taskqueue.add(queue_name='myqueue', url='/task/myfunction', params={
    # Specify parameters
    })

有没有办法,我可以指定执行的确切时间(带时区)以及有效负载数据,以便自动从队列中提取任务并在该时间瞬间执行。

您可以计算所需时间,然后在添加任务时设置任务的倒计时或
eta

倒计时:

执行此任务前的最短等待时间(秒)。默认值 归零。如果指定了eta,请不要指定倒计时

预计到达时间:

任务执行的最早时间,以秒为单位。 它是一个datetime.datetime,指定绝对ETA或无;这可能是时区感知或时区幼稚。如果没有,则默认为“现在”。从当前日期起必须少于30天


正如你在上面的页面上所看到的,似乎没有一种方法可以完全实现你想要的:时区和特定时间。我想你得做那些计算

您可以计算所需时间,然后在添加任务时设置任务的
倒计时
eta

倒计时:

执行此任务前的最短等待时间(秒)。默认值 归零。如果指定了eta,请不要指定倒计时

预计到达时间:

任务执行的最早时间,以秒为单位。 它是一个datetime.datetime,指定绝对ETA或无;这可能是时区感知或时区幼稚。如果没有,则默认为“现在”。从当前日期起必须少于30天


正如你在上面的页面上所看到的,似乎没有一种方法可以完全实现你想要的:时区和特定时间。我想你得做那些计算

您可以使用

然后您可以使用appengine后端并使用不区分时区的时间戳来安排任务。

您可以使用

然后您可以使用appengine后端并使用不区分时区的时间戳来安排任务。
您正在寻找ETA。顺便说一句,附带一些代码,并解释如何在将来设置任务

taskqueue.add(
            queue_name = "playercommands",
            url="/playercommands/next/",
            method='POST',
            eta=datetime.datetime.now() + datetime.timedelta(0, player.track_duration),


            headers={"X-AppEngine-FailFast":"true"} # for now
        )

你在找埃塔。顺便说一句,附带一些代码,并解释如何在将来设置任务

taskqueue.add(
            queue_name = "playercommands",
            url="/playercommands/next/",
            method='POST',
            eta=datetime.datetime.now() + datetime.timedelta(0, player.track_duration),


            headers={"X-AppEngine-FailFast":"true"} # for now
        )

谷歌已经更新了他们api的这一部分(对不起,链接是PHP的)。现在,您可以使用包含以下选项的PushTask发送第三个参数:

  • 'method':字符串'POST','GET','HEAD','PUT','DELETE'之一。默认值:“POST”
  • “名称”:任务的字符串名称。默认值为“”,表示服务将生成唯一的任务名称
  • “延迟秒”:浮动执行任务前等待的最短时间。默认值:零
  • “头”:在任务执行时发送的字符串附加头

  • 谷歌已经更新了他们api的这一部分(对不起,链接是PHP的)。现在,您可以使用包含以下选项的PushTask发送第三个参数:

  • 'method':字符串'POST','GET','HEAD','PUT','DELETE'之一。默认值:“POST”
  • “名称”:任务的字符串名称。默认值为“”,表示服务将生成唯一的任务名称
  • “延迟秒”:浮动执行任务前等待的最短时间。默认值:零
  • “头”:在任务执行时发送的字符串附加头

  • “最早的时间”是什么意思?任务能否在eta后执行?此外,它有助于了解可以将
    eta
    指定为推送队列的python datetime.datetime对象。回答得好!谢谢我会重新编写它,添加更多细节和一些示例代码。这意味着它不会在该时间之前执行,但会在该时间之后的某个时间执行。不能保证它会在到达ETA的准确时刻执行。示例代码只与截止日期的计算有关,因为它只是传递给任务创建者的一个参数“最早时间”是什么意思?任务能否在eta后执行?此外,它有助于了解可以将
    eta
    指定为推送队列的python datetime.datetime对象。回答得好!谢谢我会重新编写它,添加更多细节和一些示例代码。这意味着它不会在该时间之前执行,但会在该时间之后的某个时间执行。不能保证它会在到达ETA的准确时刻执行。示例代码只与截止日期的计算相关,因为它只是传递给任务创建者的一个参数