2017-02-11 7 views
1

私はDjangoを使用しています。したがって、オプションCELERY_ALWAYS_EAGERがあります。 CELERY_ALWAYS_EAGER = Trueでセロリの作業員を無効にすると、すべてが問題ありません。タイプエラーはセロリのみ

CELERY_ALWAYS_EAGER = Falseが、私はエラーを取得:

TypeError: unsupported operand type(s) for -: 'unicode' and 'unicode' 

私は別の1つのタイムスタンプを差し引くしようとするとエラーになります。 Smth like: new_date - old_date

セロリには何が問題なのですか?どうすればそれを避けることができますか?

答えて

0

セロリエンジンでなぜそれが起こっているのかわかりません。

これに対処する方法は次のとおりです。 これらのタイムスタンプを1つのタスクで計算し、それを引数として別のセロリタスクに渡しました。 したがって、CELERY_ALWAYS_EAGER = Trueの場合は、通常通りdatestampとなります。 CELERY_ALWAYS_EAGER = Falseの場合は、unicodeとなりました。チェック後

は、問題を解決:

if isinstance(newest_date, unicode): 
    old_date = pytz.utc.localize(
     datetime.datetime.strptime(old_date, '%Y-%m-%dT%H:%M:%S%fZ')) 
    new_date = pytz.utc.localize(
     datetime.datetime.strptime(new_date, '%Y-%m-%dT%H:%M:%S%fZ'))