Python模块路径(烧瓶中的相对路径,芹菜中的绝对路径)

Python模块路径(烧瓶中的相对路径,芹菜中的绝对路径),python,import,flask,redis,beaker,Python,Import,Flask,Redis,Beaker,我使用烧杯缓存来缓存函数的输出 当我从flask uwsgi应用程序中使缓存无效时,它并没有反映在芹菜应用程序中,反之亦然 进一步调查发现,烧杯使用inspect.getsourcefile(func)作为存储在redis中的唯一密钥 现在的问题是: 在flask uwsgi应用程序中,加载路径函数显示为 ./myproject/db_api.py 在芹菜中,它显示为: /opt/myproject/db_api.py 如何确保inspect.getsourcefile(func)函数在这两种情

我使用烧杯缓存来缓存函数的输出

当我从flask uwsgi应用程序中使缓存无效时,它并没有反映在芹菜应用程序中,反之亦然

进一步调查发现,烧杯使用
inspect.getsourcefile(func)
作为存储在redis中的唯一密钥

现在的问题是: 在flask uwsgi应用程序中,加载路径函数显示为

./myproject/db_api.py

在芹菜中,它显示为:

/opt/myproject/db_api.py

如何确保
inspect.getsourcefile(func)
函数在这两种情况下返回相同的路径

让芹菜将路径设置为/myporject/db_api.py或烧瓶加载路径为/opt/myproject/db_api.py都可以

芹菜正在与/etc/default/CELERYD中的
CELERYD\u CHDIR='/opt'
。在
celeryconfig.py
中,我有
CELERY\u导入=('myproject.controllers.celerytasks.cache\u invalidate')

Flask由uwsig使用ubuntu上的.ini文件运行,配置如下:

[uwsgi]
module = myproject
callable = app
chdir = /opt

如何启动Flask vs.芹菜?Flask thru uwsgi和芹菜作为守护进程与/etc/init.d/celeryd相关配置将帮助我们了解发生了什么。我有一个理论,它涉及到
cwd
:-)我已经检查了os.getcwd,在所有情况下它都是/opt。甚至sys.path都是相同的。