簡體   English   中英

如何使用Google App Engine中的模塊並使用Task Queue(Java)向其添加目標?

[英]How to use Modules in Google App Engine and add a target to them using Task Queue (Java)?

我的任務超過了任務隊列的最后期限超過10分鍾。 通過查閱不同的文檔,我發現使用模塊可以運行一個實例,該實例可以處理長時間運行的任務,但最好甚至可以使用任務隊列來完成。 我使用過后端,但已棄用。

我的問題是如何將模塊引入現有的App Engine項目中,以及如何使用它們來運行長期運行的任務?

以下是一段代碼:

Queue queue = QueueFactory.getQueue("myqueue");
TaskOptions task = TaskOptions.Builder.withUrl("/submitworker").method(Method.POST);
queue.add(task);

為了在模塊中添加長時間運行的任務,我必須對上述代碼進行哪些更改? [“ submitworker”是一個servlet,它實際上是長期運行的任務]

我已經引用了鏈接,但是無法執行第三步:
3.將服務聲明元素添加到appengine-application.xml文件。

另外,即使我成功地將模塊添加到項目中,如何使用Task Queue定位該模塊?

我經歷了這個問題,但這是一個python實現,我的實現是在Java中。

我正在尋找有關如何在模塊中使用“目標”以及在添加到任務隊列時如何使用“目標”的分步過程。

即使我將長時間運行的模塊目標添加到任務隊列中,它還是會在10分鍾后終止執行,或者即使任務隊列中的任務到期,它也會完成任務嗎?

請提出建議。

免責聲明:答案僅基於文檔(我實際上使用的是python-概念相同,但配置不同)。

要使服務/模塊允許長時間運行的任務,您必須將其配置為基本或手動擴展。 擴展類型和實例類 (表的“ Deadline行)中:

  • 在“ Manual scaling列中:

請求可以無限期地運行。 手動縮放的實例可以選擇處理/ _ah / start並執行程序或腳本數小時,而無需返回HTTP響應代碼。 任務最多可以運行24小時。

  • Basic scaling列中:

與手動縮放相同。

通過相應模塊的appengine-web.xml文件完成的模塊縮放配置在縮放元素中進行了描述:

  • <manual-scaling>

可選的。 元素啟用模塊的手動縮放並設置模塊的實例數。

  • <basic-scaling>

可選的。 元素設置模塊的實例數。

至於到模塊的實際轉換,請使用配置文件 (包括一個示例 )和appengine-web.xml語法 (請參閱moduleservice配置)補充您指向的指南。

關於appengine-application.xml ,來自配置文件

META-INF目錄具有兩個配置文件: appengine-application.xmlapplication.xml appengine-application.xml文件包含部署您的應用程序時App Engine工具使用的常規信息...

...

請注意,盡管每個appengine-web.xml文件都必須包含<application>標記,但是在此處提供的名稱將被忽略。 應用程序的名稱來自appengine-application.xml文件中的<application>標記。

要將特定隊列定向到特定服務/模塊,請使用queue.xml文件。 語法

  • <target> (推送隊列):

可選的。 命名模塊/版本,前端版本或后端的字符串,在該模塊/版本上可以執行此隊列中排隊的所有任務。

在構造任務的HTTP請求時,該字符串會放在應用程序的域名之前。 例如,如果您的應用程序ID為my-app,並且將目標設置為my-version.my-service ,則URL主機名將設置為my-version.my-service.my-app.appspot.com

如果未指定target,那么將在入隊的同一版本的應用程序上調用任務。 因此,如果您在默認應用程序版本中使任務排隊而未在隊列上指定目標,則該任務將在默認應用程序版本中被調用。 請注意,如果默認應用程序版本在入隊時間和執行時間之間改變,則任務將以新的默認版本運行。

如果您將模塊與調度文件一起使用,則任務的HTTP請求可能會被攔截並重新路由到另一個模塊。

模塊和服務是同一回事,它們類似於舊的后端(仍可使用,但已棄用)。

有兩種使模塊正常工作的基本方法:

  • 創建一個EAR並進行部署
  • 作為WAR文件獨立部署服務(這可能是您現在正在對默認模塊執行的操作)

第二個選項可能更容易,因為這只是更改application-web.xml的問題。 您可以為每個模塊提供一個倉庫或分支,或者只是一個構建過程來更改您要定位的模塊。

現在,您的application-web.xml可能具有以下內容:

<application>@appId@</application>
<version>@appVersion@</version>    
<module>default</module>   

改變成這樣

<application>@appId@</application>
<version>@appVersion@</version>    
<module>long-running-service</module>
<instance-class>B1</instance-class>
<manual-scaling>
    <instances>1</instances>
</manual-scaling>

您將隊列本身配置為以queue.xml的特定模塊為目標,請參見此處

暫無
暫無

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

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