2010-04-02 15 views
9
  • के लिए निष्पादन से किसी कार्य को देरी करने का कोई तरीका है X X (या X मिनट के बाद) में किए जाने वाले कार्य को गारंटी देने का कोई तरीका है? (दर का मतलब कार्यों के बीच अंतराल होगा लेकिन पहले कार्य के बारे में क्या होगा, पहला कार्य 'दर' समय के बाद शुरू होगा?)
+0

मैं शीर्षक अद्यतन वास्तविक प्रश्न के प्रतिनिधि होने के लिए काम को परिभाषित कहा जा रहा है। –

उत्तर

4

यदि आपका मतलब है 'अब से कम से कम X मिनट', हाँ - का उपयोग करें task queue API

+6

आप उलटी गिनती क्षेत्र को देखना चाहते हैं, जो वही है जो आप चाहते हैं। –

1

Google ने अपने एपीआई (see here) के इस हिस्से को अपडेट किया है। अब आप PushTask निम्नलिखित विकल्पों से युक्त के साथ एक 3 पैरामीटर में भेज सकते हैं:

  1. 'विधि': स्ट्रिंग 'POST' में से एक 'प्राप्त', 'हेड', 'डाल', 'नष्ट'। डिफ़ॉल्ट मान: 'पोस्ट'।
  2. 'नाम': स्ट्रिंग कार्य का नाम। '' का अर्थ है '' सेवा का अर्थ एक अद्वितीय कार्य नाम उत्पन्न होगा।
  3. 'delay_seconds': फ़्लोट कार्य निष्पादित करने से पहले प्रतीक्षा करने के लिए न्यूनतम समय। डिफ़ॉल्ट: शून्य।
  4. 'हेडर': स्ट्रिंग अतिरिक्त हेडर को निष्पादित करते समय भेजा जाना चाहिए।
2

पीएचपी

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

या बस अधिक में (यह डिफ़ॉल्ट रूप से एक पोस्ट है)

$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

0

कार्यपंक्ति एपीआई

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("/"); 
    } 
} 

का प्रयोग अब Index1 वर्ग

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*/ 

    } 
    } 
संबंधित मुद्दे