gpt4 book ai didi

Python Pyramid 关闭事件

转载 作者:太空宇宙 更新时间:2023-11-04 00:13:15 25 4
gpt4 key购买 nike

我是 Python 和 Pyramid 的新手,如果我在这里尝试做错事,我深表歉意。

我目前正在 Docker 容器内运行 Pyramid 应用程序,具有以下入口点:

pipenv run pserve development.ini --reload

这可以正确地为我的应用程序提供服务,然后我可以直接在容器内编辑代码。这一切都很好。然后我尝试将此服务注册到 Netflix 的 Eureka 服务注册表的一个实例,以便我可以使用网关(例如 Netflix Zuul)代理此服务。我使用 Eureka 的 REST API 再次实现了这一点,一切正常。

但是,当我关闭 Pyramid 服务时,我想向 Eureka 发送一个额外的 HTTP 请求以删除已注册的服务——这是理想的,所以我不必等待 Eureka 到期并且永远不会是 Zuul 可能将请求代理到已关闭服务的窗口。

问题是我无法可靠地找到在 Pyramid 中运行关闭事件的方法。基本上,当我停止 Docker 容器时,该服务收到退出代码 137(我认为这是 kill -9 的结果)并且什么也没有发生。我已经尝试使用 atexit 以及信号事件,如 SIGKILL、SIGTERM、SIGINT 等,但没有任何反应。我也试过在没有 --reload 标志的情况下运行 pserve,但这仍然不起作用。

我有没有办法在服务器和 docker 容器关闭之前可靠地发送这个 DELETE 事件?

这是我正在使用的 development.ini 文件:

[app:main]
use = egg:my-app
pyramid.reload_templates = true
pyramid.includes =
pyramid_debugtoolbar
pyramid_redis_sessions
pyramid_tm

debugtoolbar.hosts = 0.0.0.0/0

sqlalchemy.url = mysql://root:root@mysql/keyblade

my-app.secret = secretkey

redis.sessions.secret = secretkey
redis.sessions.host = redis
redis.sessions.port = 6379

[server:main]
use = egg:waitress#main
listen = 0.0.0.0:8000

# Logging Configuration

[loggers]
keys = root, debug, sqlalchemy.engine.base.Engine

[logger_debug]
level = DEBUG
handlers =
qualname = debug

[handlers]
keys = console

[formatters]
keys = generic

[logger_root]
level = INFO
handlers = console

[logger_sqlalchemy.engine.base.Engine]
level = INFO
handlers =
qualname = sqlalchemy.engine.base.Engine

[handler_console]
class = StreamHandler
args = (sys.stderr,)
level = NOTSET
formatter = generic

[formatter_generic]
format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s

最佳答案

WSGI 应用程序没有关闭协议(protocol)/api(技术上也没有用于启动的协议(protocol)/api,尽管人们使用/希望应用程序创建与服务器开始处理请求的时间接近)。您也许能够找到提供一些 Hook 的 WSGI 服务器(例如 gunicorn 提供 http://docs.gunicorn.org/en/stable/settings.html#worker-exit ),但更好的方法是让您的上游通过健康检查处理您的服务器消失。期望您能够在出现问题时可靠地发送 DELETE 不太可能成为可靠​​的解决方案。

关于Python Pyramid 关闭事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51768858/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com