簡體   English   中英

ThreadPool執行器未在GAE中執行線程

[英]ThreadPool Executor not executing threads in GAE

我正在嘗試在Google App引擎中使用執行程序框架。 貝婁是我正在嘗試運行的代碼。

Thread thread = ThreadManager.createBackgroundThread(new Runnable(){
            public void run(){
                          try{
                                  LOGGER.info( "Checking background thread");                            
                                  Thread.sleep(10);
                              }
                          catch (InterruptedException ex){
                                           throw new RuntimeException("Exception:", ex);
                              }
                         }
                    });
ScheduledThreadPoolExecutor executor = (ScheduledThreadPoolExecutor) Executors.newScheduledThreadPool(10, ThreadManager.backgroundThreadFactory());
executor.scheduleAtFixedRate(thread, 0, 30, TimeUnit.MINUTES);

但這不會啟動線程。 it works properly. 但是,如果我使用它可以正常工作。 我檢查了列入白名單的類 ,它確實提供了執行器類。 那么,我在哪里做錯了?

Saikat,

您應始終避免在App Engine上創建線程,因為它具有分布性和動態性,因此往往會產生非常不好的/意外的結果。

在您的情況下,多個實例將產生多個(本地)線程,發送多次相同的通知。 另外,請記住GAE前端實例的請求限制1分鍾 ,因此在那之后服務器將終止該請求。

幸運的是,App Engine在這種情況下提供了Cron服務

Cron服務可讓您安排作業在給定的時間或每個給定的時間段運行。 觸發cron時,GAE將調用已配置的URL,以便您可以進行處理(在這種情況下,請發送通知)。

例如:(通過提供的鏈接)

 <cron>
    <url>/weeklyreport</url>
    <description>Mail out a weekly report</description>
    <schedule>every monday 08:30</schedule>
    <timezone>America/New_York</timezone>
  </cron>

會在每個星期一@ 8:30向/ weeklyreport發出HTTP請求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM