Heroku本地-芹菜击败了Redis
我尝试使用Heroku local启动芹菜节拍流程,但收效甚微。我可以启动辅助进程,但当我切换到beat时,它就会退出 ProcfileHeroku本地-芹菜击败了Redis,heroku,redis,python-3.4,celerybeat,Heroku,Redis,Python 3.4,Celerybeat,我尝试使用Heroku local启动芹菜节拍流程,但收效甚微。我可以启动辅助进程,但当我切换到beat时,它就会退出 Procfile web: gunicorn app.wsgi --preload --timeout 15 worker: celery -A app worker scheduler: celery beat -A app foreman start scheduler 14:59:18 scheduler.1 | started with pid 3030 14:59
web: gunicorn app.wsgi --preload --timeout 15
worker: celery -A app worker
scheduler: celery beat -A app
foreman start scheduler
14:59:18 scheduler.1 | started with pid 3030
14:59:18 scheduler.1 | celery beat v3.1.20 (Cipater) is starting.
14:59:19 scheduler.1 | System check identified some issues:
14:59:19 scheduler.1 |
14:59:19 scheduler.1 | WARNINGS:
14:59:19 scheduler.1 | x.xx.xxx: (fields.W340) null has no effect on ManyToManyField.
14:59:19 scheduler.1 | x.xx.xxx: (fields.W340) null has no effect on ManyToManyField.
14:59:19 scheduler.1 | __ - ... __ - _
14:59:19 scheduler.1 | Configuration ->
14:59:19 scheduler.1 | . broker -> redis://localhost:6379//
14:59:19 scheduler.1 | . loader -> celery.loaders.app.AppLoader
14:59:19 scheduler.1 | . scheduler -> celery.beat.PersistentScheduler
14:59:19 scheduler.1 | . db -> celerybeat-schedule
14:59:19 scheduler.1 | . logfile -> [stderr]@%INFO
14:59:19 scheduler.1 | . maxinterval -> now (0s)
14:59:20 scheduler.1 | exited with code 0
14:59:20 system | sending SIGTERM to all processes
芹菜配置
# Configure Celery
BROKER_BACKEND = 'redis'
# set the broker and result backend connection info
BROKER_URL = get_env_variable('REDIS_URL')
CELERY_RESULT_BACKEND = get_env_variable('REDIS_URL')
CELERY_RESULT_PERSISTENT = True
CELERY_TASK_RESULT_EXPIRES = 43200 # 12 hours
CELERY_ENABLE_UTC = True
CELERY_ACCEPT_CONTENT = ['json', 'customjson']
CELERY_TASK_SERIALIZER = 'customjson'
CELERY_RESULT_SERIALIZER = 'customjson'
CELERY_TIMEZONE = 'US/Eastern'
CELERY_IMPORTS = ('v2.util_tasks',)
启动工人
heroku local worker
forego | starting worker.1 on port 5100
worker.1 | System check identified some issues:
worker.1 |
worker.1 |
worker.1 | [2016-02-12 19:56:07,811: WARNING/MainProcess] celery@vagrant-ubuntu-trusty-64 ready.
heroku local scheduler
forego | starting scheduler.1 on port 5200
scheduler.1 | celery beat v3.1.20 (Cipater) is starting.
scheduler.1 | System check identified some issues:
scheduler.1 | __ - ... __ - _
scheduler.1 |
系统问题必须归因于与此问题无关的字段
启动节拍调度程序
heroku local worker
forego | starting worker.1 on port 5100
worker.1 | System check identified some issues:
worker.1 |
worker.1 |
worker.1 | [2016-02-12 19:56:07,811: WARNING/MainProcess] celery@vagrant-ubuntu-trusty-64 ready.
heroku local scheduler
forego | starting scheduler.1 on port 5200
scheduler.1 | celery beat v3.1.20 (Cipater) is starting.
scheduler.1 | System check identified some issues:
scheduler.1 | __ - ... __ - _
scheduler.1 |
这次使用工头
web: gunicorn app.wsgi --preload --timeout 15
worker: celery -A app worker
scheduler: celery beat -A app
foreman start scheduler
14:59:18 scheduler.1 | started with pid 3030
14:59:18 scheduler.1 | celery beat v3.1.20 (Cipater) is starting.
14:59:19 scheduler.1 | System check identified some issues:
14:59:19 scheduler.1 |
14:59:19 scheduler.1 | WARNINGS:
14:59:19 scheduler.1 | x.xx.xxx: (fields.W340) null has no effect on ManyToManyField.
14:59:19 scheduler.1 | x.xx.xxx: (fields.W340) null has no effect on ManyToManyField.
14:59:19 scheduler.1 | __ - ... __ - _
14:59:19 scheduler.1 | Configuration ->
14:59:19 scheduler.1 | . broker -> redis://localhost:6379//
14:59:19 scheduler.1 | . loader -> celery.loaders.app.AppLoader
14:59:19 scheduler.1 | . scheduler -> celery.beat.PersistentScheduler
14:59:19 scheduler.1 | . db -> celerybeat-schedule
14:59:19 scheduler.1 | . logfile -> [stderr]@%INFO
14:59:19 scheduler.1 | . maxinterval -> now (0s)
14:59:20 scheduler.1 | exited with code 0
14:59:20 system | sending SIGTERM to all processes
以前我们运行的是RabbitMq,而不是Redis。由于迁移到Heroku,我们不得不使用Redis。我是不是错过了芹菜和redis打得不好的地方
在工人身上使用-B
标志将在嵌入调度程序的情况下启动流程,但不建议在生产中使用
代码为0的退出意味着一切正常,所以beat不应该继续运行吗