【问题标题】:Celery time/date error on Heroku?Heroku上的芹菜时间/日期错误?
【发布时间】:2012-08-20 08:16:21
【问题描述】:

我正在尝试使用 Celery 在 Heroku 上的 Django 应用程序上运行一个简单的计划定期任务。它在本地工作,我可以观察运行的任务:

python manage.py celerybeat

但是当我推到heroku并运行时:

heroku run pythonm manage.py celerybeat

我明白了:

 [2012-08-24 13:31:43,185: WARNING/MainProcess] __    -    ... __   -        _
    Configuration ->
        . broker -> django://localhost//
        . loader -> djcelery.loaders.DjangoLoader
        . scheduler -> djcelery.schedulers.DatabaseScheduler

        . logfile -> [stderr]@INFO
        . maxinterval -> 5.00 minutes (300s)
    [2012-08-24 13:31:43,186: INFO/MainProcess] Celerybeat: Starting...
    [2012-08-24 13:31:43,325: CRITICAL/MainProcess] 
celerybeat raised exception <type 'exceptions.TypeError'>: 
TypeError("can't compare offset-naive and offset-aware datetimes",)

片段设置.py

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.admin',
    'django.contrib.admindocs',
    'gunicorn',
    'items',
    'djcelery', 
    'kombu.transport.django'
)


import djcelery
import djcelery.schedulers
djcelery.setup_loader()
BROKER_URL = "django://"
CELERY_ENABLE_UTC = True
CELERY_TIMEZONE = 'America/New_York'
CELERYBEAT_SCHEDULER = "djcelery.schedulers.DatabaseScheduler"

TIME_ZONE = 'America/New_York'

片段任务.py

from celery.task import PeriodicTask
from celery.registry import tasks
from datetime import timedelta
from datetime import datetime
import sys
from subprocess import Popen, PIPE
from celery.task import task, periodic_task
from celery.schedules import crontab
import time, datetime

@periodic_task(run_every=crontab(hour="*", minute="*", day_of_week="*"))
def test_task():
    print "TASK RUNNING"

代码段 requirements.txt

celery==2.5.5
django-celery==2.5.5

出了什么问题?

【问题讨论】:

    标签: python django heroku celery


    【解决方案1】:

    您应该升级到 Celery 3.0.7,它修复了与时区相关的错误。

    【讨论】:

    • 不幸的是升级没有帮助。
    • 好的,我刚刚修复了另一个与时区相关的问题。我将在今天晚些时候发布 3.0.8,但同时您可以像这样从 github 安装:pip install -U http://github.com/celery/celery/zipball/3.0
    【解决方案2】:

    不确定确切的解决方案,但我通过添加解决了它

    USE_L10N = False
    USE_TZ = False
    

    到 settings.py

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-10
      • 2019-12-13
      • 2021-06-25
      相关资源
      最近更新 更多