![](/img/trans.png)
[英]Google App Engine JAVA: How to add more than one parameter to the Task Queue?
[英]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
語法 (請參閱module
和service
配置)補充您指向的指南。
關於appengine-application.xml
,來自配置文件 :
META-INF目錄具有兩個配置文件:
appengine-application.xml
和application.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請求可能會被攔截並重新路由到另一個模塊。
模塊和服務是同一回事,它們類似於舊的后端(仍可使用,但已棄用)。
有兩種使模塊正常工作的基本方法:
第二個選項可能更容易,因為這只是更改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.