1

我有一个名为“bel”的外部独立 python 包,它带有自己的 CLI 脚本,它使用我的基于 Falcon 的 REST API 来执行诸如验证术语库中的术语之类的事情。我还在 REST API 中使用这个包来支持大多数 REST API 功能。

当我尝试从 API 内运行的 bel 模块函数调用 API,而不是单独使用 bel 模块函数时,它无法访问 API 端点。

我添加了一个带有以下内容的 try/except 子句,以区分我在什么模式下运行“bel”函数(在 API 服务内部或外部):

try:  # try to import API module and run call directly
    import <API module>
    ...
except ModuleNotFoundError as e:
    # call API via requests module as I'm running bel outside of API

这是正确的方法吗?有没有更好的办法?我有 API 代码污染了我的独立 bel 包代码这样做,两者之间的依赖关系比我想要的要强。

我什至不确定描述我的情况的最佳方式是抑制我寻找好答案的能力。

4

1 回答 1

0

如果您当前在具有 1 个同步工作线程的 Gunicorn 应用程序中,请不要调用 Gunicorn 应用程序。它锁定它然后超时。

在运行使用 pdb 中断的代码时,我注意到以下内容:

"timestamp": "2018-02-06T19:07:18.431785Z", "message": "WORKER TIMEOUT (pid:10265)

我的问题是,当我对我当前在其中运行的 REST API 进行 REST API 调用时,Gunicorn 应用程序超时,因为此开发盒只有 1 个同步工作程序设置。当我使用超过 1 个异步工作者时,一切正常。

于 2018-02-06T19:32:38.227 回答