[英]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.