0

特定の操作の後に ZMI から外部メソッド (バックグラウンド タスク用) を呼び出して、Zope で Python-RQ を使用しようとしています。外部メソッドによって呼び出されるファイルは 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