我有dockrized
容器来运行flask app
。在配置了redis
和rq worker
之后,我得到了工作任务中module not found
的错误。我确信这是一些路径问题,我似乎无法确定我的工作人员找到flask应用程序中使用的任何模块的正确路径
以下是我当前的项目结构:
- core-app
- app.py
- worker.py
- dashboard
- Dockerfile
- symbol
- __init__.py
- symbol.py
- Dockerfile
- docker-compose.yml
docker-compose.yml
version: "3.7"
services:
db:
image: mongo
ports:
- "27017:27017"
api:
image: core-app:latest
build: .
command: python -u app.py
ports:
- "5000:5000"
depends_on:
- db
- core_redis
worker:
image: core-app:latest
command: rq worker --path /core-app/ --url redis://core_redis:6379 my_queue
depends_on:
- core_redis
core_redis:
image: redis:5.0.8-alpine
ports:
- "6379:6379"
volumes:
- ./redis:/data
dashboard:
build: ./dashboard
image: dashboard
container_name: dashboard
ports:
- 9181:9181
command: rq-dashboard -H core_redis
depends_on:
- core_redis
worker.py
from symbol import symbol
def run_symbol_worker_task(symbol_id):
print('starting worker tasks for: ' + symbol_id) # in place of actual logging
symbol.some_func_here()
return {symbol_id: 'task complete'}
app.py
redis_conn = Redis(host='core_redis', port=6379, db=0)
q = Queue('my_queue', connection=redis_conn)
q.empty()
job = q.enqueue(run_symbol_worker_task, 'key')
print(job.get_status())
我得到的错误是:
worker_1 | Traceback (most recent call last):
worker_1 | File "/usr/local/lib/python3.7/site-packages/rq/worker.py", line 822, in perform_job
worker_1 | rv = job.perform()
worker_1 | File "/usr/local/lib/python3.7/site-packages/rq/job.py", line 605, in perform
worker_1 | self._result = self._execute()
worker_1 | File "/usr/local/lib/python3.7/site-packages/rq/job.py", line 611, in _execute
worker_1 | return self.func(*self.args, **self.kwargs)
worker_1 | File "/usr/local/lib/python3.7/site-packages/rq/job.py", line 200, in func
worker_1 | return import_attribute(self.func_name)
worker_1 | File "/usr/local/lib/python3.7/site-packages/rq/utils.py", line 155, in import_attribute
worker_1 | module = importlib.import_module(module_name)
worker_1 | File "/usr/local/lib/python3.7/importlib/__init__.py", line 127, in import_module
worker_1 | return _bootstrap._gcd_import(name[level:], package, level)
worker_1 | File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
worker_1 | File "<frozen importlib._bootstrap>", line 983, in _find_and_load
worker_1 | File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
worker_1 | File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
worker_1 | File "<frozen importlib._bootstrap_external>", line 728, in exec_module
worker_1 | File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
worker_1 | File "/core-app/worker.py", line 5, in <module>
worker_1 | from symbol import symbol
worker_1 | ImportError: cannot import name 'symbol' from 'symbol' (/usr/local/lib/python3.7/symbol.py)
我不明白为什么路径没有设置为在我的根目录中查找,而是查找usr/local/lib/python3.7
目前没有回答
相关问题 更多 >
编程相关推荐