GVKun编程网logo

如何使用Google App Engine中的模块并使用Task Queue(Java)向其添加目标?

17

如果您对如何使用GoogleAppEngine中的模块并使用TaskQueue和Java向其添加目标?感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解如何使用GoogleAppEngine中的模

如果您对如何使用Google App Engine中的模块并使用Task QueueJava向其添加目标?感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解如何使用Google App Engine中的模块并使用Task Queue的各种细节,并对Java向其添加目标?进行深入的分析,此外还有关于google-app-engine-如何使用Dockerfile运行Google App Engine服务器、java – 使用Google App Engine的Web服务、java – 使用Google Compute Engine作为Google App Engine Web应用程序的代理、java – 如何使用com.google.appengine.api.datastore.Text的实用技巧。

本文目录一览:

如何使用Google App Engine中的模块并使用Task Queue(Java)向其添加目标?

如何使用Google App Engine中的模块并使用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定位该模块?

我正在寻找有关如何在模块中使用“目标”以及在添加到任务队列时如何使用“目标”的分步过程。

即使我将长时间运行的模块目标添加到任务队列中,它还是会在10分钟后终止执行,或者即使任务队列中的任务到期,它也会完成任务吗?

请提出建议。

答案1

小编典典

模块和服务是一回事,它们类似于旧的后端(仍可使用,但已弃用)。

有两种使模块正常工作的基本方法:

  • 创建一个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.xmlSeehere中将队列本身配置为以特定模块为目标。

google-app-engine-如何使用Dockerfile运行Google App Engine服务器

google-app-engine-如何使用Dockerfile运行Google App Engine服务器

我是Docker的新手,我需要使用Dockerfile在Google App Engine服务器中运行web2py应用程序,为此,我创建了dockerfile来安装python,gae服务器和我的web2py源文件夹.

我的问题是如何使用Dockerfile启动gae服务器以及如何将现有源代码配置为gae以及如何基于docker运行容器IP运行gae服务器以在浏览器上查看我的应用程序着陆页

这是我的Dockerfile

FROM ubuntu:trusty
MAINTAINER John
#install python
RUN sudo apt-get install python --assume-yes
RUN apt-get install -y wget unzip
#install GAE
RUN wget https://dl.google.com/dl/cloudsdk/channels/rapid/google-cloud-    sdk.zip && unzip google-cloud-sdk.zip && rm google-cloud-sdk.zip
RUN google-cloud-sdk/install.sh --usage-reporting=true --path-update=true --  bash-completion=true --rc-path=/.bashrc --additional-components app-engine-python 
ENV PATH /google-cloud-sdk/bin:$PATH

copY Testapp/ . 
RUN pwd 
workdir Testapp
CMD python web2py.py  
#Expose the ports
EXPOSE 8081
ENTRYPOINT ["/Testapp/web2py"]
#CMD ["python","/Testapp/web2py.py"]
CMD ["/bash/"]
最佳答案
尝试:

FROM ubuntu:trusty
MAINTAINER Chandra
#install python
RUN apt-get install -y -qq wget python unzip
#install GAE
RUN wget https://dl.google.com/dl/cloudsdk/channels/rapid/google-cloud-sdk.zip && unzip google-cloud-sdk.zip && rm google-cloud-sdk.zip
RUN google-cloud-sdk/install.sh --usage-reporting=true --path-update=true --bash-completion=true --rc-path=/.bashrc --additional-components app-engine-python
ENV PATH /google-cloud-sdk/bin:$PATH

workdir CFSA_Testapp
copY CFSA_Testapp/ .
RUN pwd
CMD python guestbook.py
#Expose the ports
EXPOSE 8080
CMD ["dev_appserver.py","--host=0.0.0.0","."]

我仅通过将它放在CFSA_Testapp文件夹中就使用Google’s example app对其进行了测试.

您可以使用docker run -it –rm -p 8080:8080 image_name来运行它.

然后,您只需在localhost:8080上打开浏览器就可以了.

java – 使用Google App Engine的Web服务

java – 使用Google App Engine的Web服务

我看到Google App Engine可以托管将返回html等的Web应用程序.但是通过http和accept / return xml进行通信的Web服务呢?

有谁知道如何使用Python在Goggle App Engine中完成这项工作,或者在Java中是如何做到的(不支持JAS-WX)?任何链接o样品或文章非常感谢.

谢谢 // :)

解决方法

Google App Engine允许您编写返回任何类型的HTTP响应内容的Web服务.这包括xml,json,文本等.

例如,看一下Google提供的guestbook sample project,它显示HTTP响应以text / plain的形式返回:

public class GuestbookServlet extends HttpServlet {
        public void doGet(HttpServletRequest req,HttpServletResponse resp) throws IOException {
            UserService userService = UserServiceFactory.getUserService();
            User user = userService.getCurrentUser();

            if (user != null) {
                resp.setContentType("text/plain");
                resp.getWriter().println("Hello," + user.getNickname());
            } else {
                resp.sendRedirect(userService.createLoginURL(req.getRequestURI()));
            }
        }
   }

此外,app engine google group是一个了解更多,提出问题和查看示例代码的好地方.

java – 使用Google Compute Engine作为Google App Engine Web应用程序的代理

java – 使用Google Compute Engine作为Google App Engine Web应用程序的代理

我在Google App Engine上有一个Java Web应用程序,它向外部API发出请求. API最近需要将IP地址列入白名单才能访问其服务.由于GAE不提供静态IP,我理解一种解决方案是设置GCE实例(使用静态IP)并将其用作GAE应用程序发出的外部请求的代理.

我已经使用Debian GNU / Linux 9建立了一个f1-micro实例,并根据the documentation创建了一个静态外部IP地址.

如何安装Nginx并设置GAE以将请求路由到GCE代理?

最佳答案
我们遇到了类似的问题,客户需要将我们的IP地址列入白名单.我们解决了这个问题:

>使用静态IP地址启动计算引擎.这是我们给客户的IP地址
>在计算引擎上安装Squid(https://help.ubuntu.com/lts/serverguide/squid.html)
>然后,我们通过代理服务器重定向来自App Engine的所有呼叫.您没有列出您正在使用的语言,但对于PHP,这意味着在CURL操作中添加以下两行:

curl_setopt($ch,CURLOPT_PROXY,“http://”.$_SERVER [‘SQUID_PROXY_HOST’].“:”.$_SERVER [‘SQUID_PROXY_PORT’]);

curl_setopt($ch,CURLOPT_PROXYUSERPWD,$_SERVER [‘SQUID_PROXY_USER’].“:”.$_SERVER [‘SQUID_PROXY_PWD’]);

需要注意的一点是,根据您正在进行的呼叫次数,微型实例可能不适合您.我们最初在微型盒子上设置我们的代理服务器,但每隔几天就要重新启动它.我们最终切换到一个标准的盒子,并没有遇到任何问题,因为.

java – 如何使用com.google.appengine.api.datastore.Text

java – 如何使用com.google.appengine.api.datastore.Text

我使用Quercus在谷歌应用引擎上运行PHP,并使用下面的代码将值插入GAE数据存储区(BigTable).

<?PHP
import com.google.appengine.api.datastore;
import com.google.appengine.api.datastore.Entity;
import com.google.appengine.api.datastore.DatastoreServiceFactory;

$entity = new Entity("test"); 
$entity->setProperty('story',' --- more than 500 char ---');
$dataService = DatastoreServiceFactory::getDatastoreService();
$dataService->put($entity);
?>

但由于故事值超过500个字符,因此返回流动错误.

error:
com.caucho.quercus.QuercusException: com.google.appengine.api.datastore.Entity.setProperty: story: String properties must be 500 characters or less. Instead, use com.google.appengine.api.datastore.Text, which can store strings of any length.

我不知道关于java的任何事情.
有谁知道如何在我的PHP代码中使用com.google.appengine.api.datastore.Text.

谢谢

解决方法:

这会有用吗?

<?PHP
import com.google.appengine.api.datastore;
import com.google.appengine.api.datastore.Entity;
import com.google.appengine.api.datastore.DatastoreServiceFactory;
import com.google.appengine.api.datastore.Text;


$entity = new Entity("test"); 
$TextValue = new Text(' --- more than 500 char ---');
$entity->setProperty('story',$TextValue);
$dataService = DatastoreServiceFactory::getDatastoreService();
$dataService->put($entity);
?>

关于如何使用Google App Engine中的模块并使用Task QueueJava向其添加目标?的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于google-app-engine-如何使用Dockerfile运行Google App Engine服务器、java – 使用Google App Engine的Web服务、java – 使用Google Compute Engine作为Google App Engine Web应用程序的代理、java – 如何使用com.google.appengine.api.datastore.Text等相关内容,可以在本站寻找。

本文标签: