gpt4 book ai didi

python - RQ - 导入错误 : No module named XXX

转载 作者:可可西里 更新时间:2023-11-01 11:24:45 25 4
gpt4 key购买 nike

我遇到了 rq 工作人员的问题。

这是我的应用程序的结构:

app/
run.py
project/
__init__.py
clock.py
views.py
worker.py
controllers/
__init__.py
leads_fb.py

一旦我运行我的应用程序就会执行时钟,这是代码:

from apscheduler.schedulers.background import BackgroundScheduler
from rq import Queue, get_current_job
from rq.job import Job
from worker import conn
from controllers import leads_fb
import logging
import os


q = Queue(connection=conn)
sched = BackgroundScheduler()

def enque_jobs():
info = '1aooEOTBQz1pAW915-JonL3Jh2mhclR5EZTHGotFBe7s||blah blah blah'
job = q.enqueue(leads_fb.prueba, info)
print 'This job is run every 3 seconds.'

if os.environ.get("WERKZEUG_RUN_MAIN") == "true":
sched.add_job(enque_jobs, 'interval', seconds=3)
sched.start()

log = logging.getLogger('apscheduler.executors.default')
# log.setLevel(logging.INFO) # DEBUG

# fmt = logging.Formatter('%(levelname)s:%(name)s:%(message)s')
h = logging.StreamHandler()
# h.setFormatter(fmt)
log.addHandler(h)
then clock enqueues jobs with the rq worker which is worker.py:

import os

import redis
from rq import Worker, Queue, Connection

listen = ['high', 'default', 'low']

redis_url = os.getenv('REDISTOGO_URL', 'redis://localhost:6379')

conn = redis.from_url(redis_url)

if __name__ == '__main__':
with Connection(conn):
worker = Worker(map(Queue, listen))
worker.work()

排队作业正在执行的函数是controllers/leads_fb.py:

from wksh import init_wksh, get_last_row, write_in_cell

def prueba(info):
print 'aaaaa'
info = info.split('||')
id_client = info[0]
str_prueba = info[1]
wksh = init_wksh(id_client)
print wksh
row = get_last_row(wksh)

write_in_cell(wksh,'A'+str(row),str_prueba)
print 'funciona ' + str(row)

当我使用根目录中的 run.py 文件运行我的应用程序时,出现错误:ImportError: No module named project.controllers.leads_fb

我的 run.py 文件有这段代码:

from project import app
from project import worker
from project import clock

if __name__ == "__main__":
app.run(debug=True,host='127.0.0.1', port=1234)

我的 app/project/init.py 文件有这个

from flask import Flask

app = Flask(__name__)
app.config.from_object('config')

from . import views
from . import worker
from . import clock

请帮忙!!我已经坚持了一个星期,无法解决这个问题。我已经阅读了其他线程问题,并且开始理解它必须对 PYTHONPATH 做一些事情,将我的模块目录指向我的 rq worker,但我不知道如何实现它。

如何将导入路径添加到我的 worker.py 文件中?我已经测试过,如果我使用命令行“rqworker”在根目录中启动 worker,它工作正常。我的应用程序认为 worker.py 文件位于根目录中,但实际上它位于根目录中的 project/中。我如何以及在哪里指定它以便它在本地工作并部署在 Heroku 中?

最佳答案

这是您的错误消息吗? “导入错误:没有名为 config 的模块”

你错过了该行的 config.py

app.config.from_object('config')

from_object(obj) :对象可以是

  1. 将导入具有该名称的对象
  2. 实际对象引用:直接使用该对象

因此,为了使'config'有效,您可以在/app 下创建一个config.py

关于python - RQ - 导入错误 : No module named XXX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49495488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com