python - 关闭开发服务器上的 Celery 任务延迟

标签 python django celery

我在 Heroku 上使用 Celery 和 RabbitMQ 并进行以下设置:

# settings.py

DEFAULT_AMQP = "amqp://guest:guest@localhost//"
BROKER_URL = os.getenv('CLOUDAMQP_URL', DEFAULT_AMQP)
CELERY_TASK_SERIALIZER = 'pickle'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_ENABLE_UTC = True
CELERY_STORE_ERRORS_EVEN_IF_IGNORED = True
CELERY_RESULT_BACKEND = False
BROKER_POOL_LIMIT = 5

# trying to clean up this memory leak
CELERYD_MAX_TASKS_PER_CHILD = 5
CELERYD_TASK_TIME_LIMIT = 60*10  # time limit in seconds--watch if we end up throwing big tasks onto this

我通常使用.delay()调用任务。

在 Heroku 上,我必须提供一个单独的工作测功机来处理这些排队的进程。对于开发服务器,我仍然想调用我的延迟任务,但在同一线程中执行它,而不是将其推迟到工作队列。这意味着每次我在临时服务器上调用 .delay() 时,我不想延迟任务,而实际上只是调用它,就好像我使用了正常的 .__call__( ) 方法。

是否有 Celery 设置或其他方式可以让我基本上关闭 Celery 并将对 .delay() 的调用传递给 .__call__()

最佳答案

将开发环境的 CELERY_ALWAYS_EAGER 设置为 True:http://celery.readthedocs.org/en/latest/configuration.html#celery-always-eager

关于python - 关闭开发服务器上的 Celery 任务延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26109252/

相关文章:

python - 迁移过程中创建FK关系

django - Python-3 请求参数编码错误

python - 提取统计数据

python - celery .delay 挂起(最近,不是授权问题)

python - REST 响应内容 "magically"如何从 'list' 转换为 'string'

python - 使用 Python 获取屏幕方向

python - 如何初始化UnorderedBulkOp()?

python - 将常量列添加到 Pandas 数据框的更好方法

django - 是否可以在 Celery 任务中运行 VACUUM 命令?

celery autodiscover_tasks 不适用于 ValueError : Empty module name