2010-04-02 92 views
9
  • 有没有办法保证任务在X分钟内(或X分钟后)执行? (费率意味着任务之间的时间间隔,但第一项任务的情况如何,第一项任务是否会在“费率”时间之后开始)
+0

我更新的标题是代表了实际问题的定义工作被要求。 – 2010-04-02 16:45:08

回答

4

如果您的意思是'至少X分钟',则是 - 使用task queue API

+6

你会想看看倒计时领域,这正是你想要的。 – 2010-04-02 16:45:32

1

谷歌已经更新了这部分的api(see here)。现在,您可以在第三个参数发送包含下列选项PushTask:

  1. “方法”:串一“POST”的,“GET”,“HEAD”,“PUT”,“删除”。默认值:'POST'。
  2. 'name':string任务的名称。默认为''表示服务将生成一个唯一的任务名称。
  3. 'delay_seconds':float执行任务之前等待的最短时间。默认值:零。
  4. 'header':string任务执行时发送的附加头文件。
2

在PHP

$task = new PushTask(
    '/some/callback', 
    ['param1' => $param1, 'param2' => $param2, 'param3' => $param3], 
    ['name'=>'EmailTask', 'method'=>'POST', 'delay_seconds'=>30] 
); 

或者更简单(这是在默认情况下POST)

$task = new PushTask(
    '/some/callback', 
    ['param1' => $param1, 'param2' => $param2, 'param3' => $param3], 
    ['delay_seconds'=>30] 
); 
+0

更多信息请访问:https://cloud.google.com/appengine/docs/standard/php/refdocs/classes/google.appengine.api.taskqueue.PushTask – lifeofguenter 2017-06-29 10:46:52

0

使用任务队列API

public class Enqueue extends HttpServlet { 
    private static final Logger log = Logger.getLogger(Enqueue.class.getName()); 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 

     String param1= request.getParameter("param1"); 
     String param2= request.getParameter("param2"); 
     String time = request.getParameter("time"); 
     int timer = Integer.parseInt(time) * 1000;//sec to millisec 
     log.info("Executing in "+ timer+" seconds"); 
     // Add the task to the default queue. 
     // Execute in 5 seconds 
    Queue queue = QueueFactory.getDefaultQueue(); 
      queue.add(TaskOptions.Builder.withUrl("/index1").param("param1", param1) 
        .param("param2", param2) 
        .countdownMillis(time)); 

     response.sendRedirect("/"); 
    } 
} 

现在指数1级

public class Index1 extends HttpServlet { 
    private static final Logger log = Logger.getLogger(Index1.class.getName()); 

    @Override 
    public void doPost(HttpServletRequest req, HttpServletResponse resp) 
      throws IOException { 
     String param1= req.getParameter("param1"); 
     String param2= req.getParameter("param2"); 

      log.info("Worker processing " + param1); 
/*Define job to be executed*/ 

    } 
    }