我有一个由Heroku托管的Django项目,带有一个(postgresql)数据库,一个与该数据库交互的应用程序(在web dyno上),以及一个也应该与数据库交互的工作者 .

该应用程序要求工作人员在后台执行长时间运行的任务,就像一些数据库查询一样 . 但是,我在实现这个方面遇到了麻烦 . 我认为问题是工作人员无权访问数据库 . 我看到的具体错误是:

app[worker.1]: ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

这对我来说没有意义,因为来自 Worker 的错误 . 设置正在加载正常 - 网络dyno上的所有内容都按预期工作 . 我唯一能想到的是工作者无法访问配置的设置,包括数据库凭据 .

我该如何解决这个问题?

Edit: 这是Procfile:

web: gunicorn myapp.wsgi --log-file -
worker: python launchworker.py

正如那里指出的那样,worker是作为Heroku工作者启动的,它根本不是通过Django项目运行的(正如我所理解的那样,如果它是一个管理命令) . This was the method recommended by Heroku.