【发布时间】:2023-02-05 21:19:18
【问题描述】:
我有一个名为 main.py 的 Python 文件。我在 Windows 上的 Python 3.9.13 上运行它。
进口独角兽
从 fastapi 导入 FastAPI
app = FastAPI()
@app.post('/c')
async def c(b: str):
print(a)
if __name__ == '__main__':
a = load_embeddings('embeddings')
uvicorn.run('main:app', host='127.0.0.1', port=80)
运行它,然后调用 POST /c 将导致 500 错误,其中 NameError 'a' is not defined。
但是很明显a 将在服务器运行之前首先定义。如果我将 a 移到 if __name__ == '__main__': 之外,那么它会起作用,但它会导致 load_embeddings 因未知原因(3 个确切)而运行多次。由于load_embeddings对我来说需要很长时间,所以我不想重复执行。
我希望寻找其中任何一个作为我的问题的解决方案:停止 if __name__ == '__main__': 之外的任何内容多次执行,或者在 if __name__ == '__main__': 下定义时全局定义 a。
注意:为了便于阅读,特意重命名了变量名。请不要给我任何关于编码风格/命名约定的建议。我知道社区很有帮助,但这不是重点,谢谢。
【问题讨论】:
标签: python variables fastapi uvicorn