0

我正在尝试通过在某个操作后从 ZMI 调用外部方法(用于后台任务)来将 Python-RQ 与 Zope 一起使用。外部方法调用的文件位于 Extensions 中。它初始化与 Redis 的连接并导入一个运行后台任务的模块。问题是这个要导入的文件应该放在哪里?如果我将它放在 Products 目录中,Python-RQ 似乎无法识别。它抛出no module named Products.xyz。下面是代码片段

from redis import Redis
from rq import Queue
from Products.def_update_company_status import ae_update_company_status

q = Queue(connection=Redis())

def rq_worker(context):
    q.enqueue(ae_update_company_status)
    return 'DONE'

rq_worker 函数由外部方法调用。

下面是错误

        18:12:40 default: Products.def_update_company_status.ae_update_company_status() (4b2b5c81-e329-4031-a3e7-b9b1bb198278)
    18:12:40 ImportError: No module named Products.def_update_company_status
    Traceback (most recent call last):
      File "/home/zope/ams/lib/python2.6/site-packages/rq-0.6.0-py2.6.egg/rq/worker.py", line 588, in perform_job
        rv = job.perform()
      File "/home/zope/ams/lib/python2.6/site-packages/rq-0.6.0-py2.6.egg/rq/job.py", line 498, in perform
        try:
      File "/home/zope/ams/lib/python2.6/site-packages/rq-0.6.0-py2.6.egg/rq/job.py", line 206, in func
      File "/home/zope/ams/lib/python2.6/site-packages/rq-0.6.0-py2.6.egg/rq/utils.py", line 150, in import_attribute
        module = importlib.import_module(module_name)
      File "build/bdist.linux-x86_64/egg/importlib/__init__.py", line 37, in import_module
        __import__(name)
    ImportError: No module named Products.def_update_company_status
    Traceback (most recent call last):
      File "/home/zope/ams/lib/python2.6/site-packages/rq-0.6.0-py2.6.egg/rq/worker.py", line 588, in perform_job
        rv = job.perform()
      File "/home/zope/ams/lib/python2.6/site-packages/rq-0.6.0-py2.6.egg/rq/job.py", line 498, in perform
        try:
      File "/home/zope/ams/lib/python2.6/site-packages/rq-0.6.0-py2.6.egg/rq/job.py", line 206, in func

      File "/home/zope/ams/lib/python2.6/site-packages/rq-0.6.0-py2.6.egg/rq/utils.py", line 150, in import_attribute
        module = importlib.import_module(module_name)
      File "build/bdist.linux-x86_64/egg/importlib/__init__.py", line 37, in import_module
        __import__(name)
    ImportError: No module named Products.def_update_company_status
    18:12:40 Moving job to u'failed' queue
    18:12:40
    18:12:40 *** Listening on default...
4

0 回答 0