当前位置: 首页 > 知识库问答 >
问题:

将url路由到GAE Flex服务器,而其他站点在GAE标准上运行

戚侯林
2023-03-14

使用Google App Engine标准Python 2.7,我的调度中有一个路径。yaml指定所有类型为“*/flex/*”的URL以路由到flex服务。

dispatch.yaml派遣:

- url: '*/flex/*'
    module: flex

flex环境是一个自定义python 3.7运行时,通常使用以下方式执行:

python开发应用服务器。py flex。yaml--custom_entrypoint=“docker run-p 9090:8080 flex_app”

对于我的环境中的其他服务,我尝试使用以下命令启动开发环境:python dev_appserver。派送。yaml默认。yaml同步。yaml任务。yaml flex。yaml--custom_entrypoint=“docker run-p 9090:8080 flex_app”--port=8080--skip_sdk_update_check”

然而,当这开始时,当我需要从端口9090访问flex服务时,它开始为每个服务分配本地ip地址。

服务器输出示例:

INFO     devappserver2.py:278] Skipping SDK update check.
INFO     dispatcher.py:223] Starting dispatcher running at: http://0.0.0.0:8080
INFO     dispatcher.py:256] Starting module "default" running at: http://0.0.0.0:8081
INFO     dispatcher.py:256] Starting module "sync" running at: http://0.0.0.0:8082
INFO     dispatcher.py:256] Starting module "task" running at: http://0.0.0.0:8083
INFO     dispatcher.py:256] Starting module "flex" running at: http://0.0.0.0:8084

如果我点击URL localhost:9090,我就能成功访问flex应用程序。但是,如果访问localhost:8084或localhost:8080/flex/,则会收到以下错误:

503-此请求已超时

服务器日志反映了这一点,但没有显示实际错误:

INFO模块。py:861]flex:“GET/HTTP/1.1”503 59

是否可以将URL从GAE标准环境发送到Flex环境,并将其从指定端口路由到所需的所需端口?我认为这是可能的,因为Google App Engine的文档指定可以将环境混合在一起。我还试图通过强制docker在端口8084上运行来解决这个问题,但是端口不能共享。


共有2个答案

燕钟展
2023-03-14

开发服务器只能用于第一代标准环境应用,它不适用于灵活的应用,请参阅如何将Python 3与谷歌应用引擎的本地开发服务器一起使用。

我认为您的尝试最终只是将服务作为标准环境运行,而不是灵活的环境(它正确运行的可能性非常小)。

要正确运行,必须将其从本地dev_服务器执行中删除。到灵活服务的跨服务链接需要某种本地黑客才能使用9090端口(通过env变量或简单的一些硬编码值),您将无法使用调度。在这种情况下,yaml路由(因为本地devserver不知道灵活服务的存在)。

邰昀
2023-03-14

通过查看dev\u appserver找到了这个。py—帮助。结果证明,这个问题的答案只是将自定义入口点更改为命令docker run-p{port}:8080 flex_app,这将自动将GAE随机分配的端口转发给docker实例。

--custom_entrypoint CUSTOM_ENTRYPOINT
                        specify an entrypoint for custom runtime modules. This
                        is required when such modules are present. Include
                        "{port}" in the string (without quotes) to pass the
                        port number in as an argument.
 类似资料:
  • 问题内容: 我不确定这个问题的正确说法是什么,但是就这样。 我想设置两个Web应用程序。一种基于golang,另一种基于apache / php(wordpress) 这些应用程序将作为单独的Google Cloud Platform API引擎托管。 我希望这些内容可以在同一域下发布,例如,主要的golang应用程序网址为www.mygolangapp.com,而wordpress网址为www.

  • 这是我的第一个帖子,所以我会尽量理解。 我从symfony开始,有一个问题我无法单独解决。 这是我的控制器,我和WAMP一起工作。当我的Url为“mysite.local”时,它会正常工作,并显示它应该显示的内容(感谢home()函数)。但是当我的Url为“mysite.local/hello”时,我有以下错误。 找不到 在此服务器上找不到请求的URL。 Apache/2.4.41(Win64)P

  • 回溯(最近一次调用):文件“celenium.py”,第22行,在browser.find_element_by_link_text(“Advanced”)中。单击()文件“C:\users\aesop\appdata\local\programs\python\python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py

  • 问题内容: 我正在尝试在开发GAE服务器上模拟HTTPServletRequest数据。我正在运行Eclipse插件1.3.7 我试图做到这一点: 运行以下命令会产生异常: java.lang.NoClassDefFoundError:sun.reflect.ReflectionFactory是一个受限类。有关更多详细信息,请参阅Google App Engine开发人员指南。 关于如何在GAE开

  • 问题内容: 如果在不同的服务器上使用URL,为什么jQuery.ajax()会引发错误且没有错误消息? 问题答案: 这是因为在浏览器中为XMLHttpRequests实现的跨域请求受到限制。您可以使用JSONP作为格式来解决此问题,否则您将需要一个服务器端代理来处理请求。 引用http://jquery.com上的ajax文档 注意:当’script’或’jsonp’为dataType时,所有远程

  • 我正在JMeter上运行一个测试脚本。我正在测试的系统的设计是多轮廓的。这意味着,当我使用HTTP服务器登录时,我被重定向到Server1或Server2(随机)。在我记录的测试脚本上,我被重定向到Server2。因此,每当我再次运行这个预录制的测试脚本(使用100个用户/线程)时,只有那些重定向到Server2的请求被成功处理,而那些重定向到Server1的请求返回一个“未找到用户会话”错误。我