我正在尝试在Google App Engine上创建一个微服务,不旨在处理HTTP请求。
相反,我希望有一个持续运行的Python脚本来监控远程队列 - 确切地说是RabbitMQ - 并且当任务被推送到队列时向另一个服务发出api调用
我想知道,首先,是否可以在部署时运行脚本 - 一个不是源于用户操作/请求的脚本?
其次,我将如何实现这一目标?
提前感谢您的时间!
答案 0 :(得分:3)
您可以将“脚本”部署为手动扩展模块 - 请参阅https://cloud.google.com/appengine/docs/python/modules/ - 只有一个实例。正如文档所说,“当您启动手动扩展实例时,App Engine会立即向每个实例发送/ _ah / start请求”;所以,只需将该模块的/ _ah / start处理程序设置为您要运行的处理程序(在模块的yaml文件和Python代码中的WSGI应用程序中,使用您喜欢的任何轻量级框架 - webapp2,falcon,flask,bottle,或者其他任何东西......在这种情况下,框架不会为你做太多的事情,除了一次性路由之外。
请注意,手动扩展模块的免费计算机小时数限制为每天8小时(对于较小的B1实例类;对于较大的实例类,按比例较少),因此您可能需要升级到付费应用状态如果你需要跑8个多小时。
答案 1 :(得分:-1)
我认为这个设计存在一些问题。
首先,App Engine被设计为HTTP请求处理器,而不是RabbitMQ消息处理器。 GAE适用于许多小型请求,而不是一个长期运行的过程。
其次,“RabbitMQ should not be exposed to the public internet, it wasn't created for such use case.”
我建议您将RabbitMQ客户端与RabbitMQ代理保持在同一内部网络上,并让客户端向App Engine发送HTTP请求。