0

uwsgi デコレータ (特に cron デコレータ) を使用して、特定の時間に処理を実行しています。次のコードがあります。

import cherrypy
import uwsgidecorators

class TestObject(object):
    @cherrypy.expose
    def index(self):
        launchapp = self.launchapp(-1,-1,-1,-1,-1,"foobar")
        return "This is a test"

    @uwsgidecorators.cron(minute,hour,day,month,dayweek)
    def launchapp(self,target):
        print "the target is %s" %target
        return

ただし、次のエラーが表示されます。

    @uwsgidecorators.cron(minute,hour,day,month,dayweek)
NameError: name 'minute' is not defined

基本的に、index 関数で cron デコレータのタイミング パラメータを指定しようとしています。私が間違っていることを知っている人はいますか?

4

1 に答える 1

2

コードが失敗する理由

このエラーは、パラメーターを渡しているという事実とは何の関係もありませんminute。変数が定義されていないだけです。

次のようにすると、まったく同じエラーが発生します。

>>> a = 'a'
>>> print b
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'b' is not defined
>>> 

おそらくやりたいことは次のとおりです。

@uwsgidecorators.cron(minute = 5,hour = 2, # and so on.

より包括的な例については、 uwsgi のドキュメントをご覧ください。


-- 以下を編集します。

どうすれば修正できますか

インデックスにヒットした後、crontab にタスクを追加しようとしているようです。

これはデコレータの使用例ではありません。デコレータは、関数が関数定義で cron で実行される必要があることを示すことのみを目的としています。基本的に、デコレーターが実行されると (および呼び出されずに定義された関数)、crontab に追加されます。

あなたの場合、crontab に関数を追加したいとします。のようなものを使用する必要がありますuwsgi.add_cronデコレータ コードを見て、どのように使用できるかを確認できます。

ただし、メソッドではなく関数を使用する必要があります。

于 2012-09-12T21:50:41.903 に答える