我必须根据用户的请求运行多个作业。然而,其中只有一个是重要的。所以我有一个MainWorker,在它的perform方法中我调用了不同的其他worker,例如Worker1、Worker2。Worker1和Worker2可以延迟,我需要优先MainWorker。这就是我的perform方法现在的样子classMainWorkerdefperform(user_id)User.find(user_id).main_taskWorker1.perform_async(user_id)Worker2.perform_async(user_id)endend我以后可能会有更多的subworke
我遇到了一个非常糟糕的情况。我有以下设置。我有一个代表FSM的django模型djangoFSMfield我有一个celery任务,它发送一封电子邮件,然后推进主要对象FSM的状态。从celery任务的角度来看,对象“似乎”被保存了。但是从主django进程的角度来看,对象没有被更新。奇怪的是,辅助对象被正确保存到数据库中,稍后可以从主django进程访问。我在Celery任务的对象上显式调用了.save(),date_last_modified=models.DateTimeField(auto_now=True,null=True)字段有Celery任务中的时间戳比主线程晚,尽管我
我遇到了一个非常糟糕的情况。我有以下设置。我有一个代表FSM的django模型djangoFSMfield我有一个celery任务,它发送一封电子邮件,然后推进主要对象FSM的状态。从celery任务的角度来看,对象“似乎”被保存了。但是从主django进程的角度来看,对象没有被更新。奇怪的是,辅助对象被正确保存到数据库中,稍后可以从主django进程访问。我在Celery任务的对象上显式调用了.save(),date_last_modified=models.DateTimeField(auto_now=True,null=True)字段有Celery任务中的时间戳比主线程晚,尽管我
我正在使用带有Redis的celery。当前的Redis被用作代理和结果后端。BROKER_TRANSPORT='redis'BROKER_URL='redis://domain:8888/0'CELERY_RESULT_BACKEND='redis://domain:8888/0'我想清除一些东西:使用结果后端有什么好处?我的意思是我会通过使用它得到什么我如何才能看到它正在运行?我的意思是Redis中会存储一些东西吗?该存储将是永久性的吗?我该如何查询?存储空间会随着时间增长吗?我可以用celery花监控结果后端吗? 最佳答案 结
我正在使用带有Redis的celery。当前的Redis被用作代理和结果后端。BROKER_TRANSPORT='redis'BROKER_URL='redis://domain:8888/0'CELERY_RESULT_BACKEND='redis://domain:8888/0'我想清除一些东西:使用结果后端有什么好处?我的意思是我会通过使用它得到什么我如何才能看到它正在运行?我的意思是Redis中会存储一些东西吗?该存储将是永久性的吗?我该如何查询?存储空间会随着时间增长吗?我可以用celery花监控结果后端吗? 最佳答案 结
应用程序包括:-Django-雷迪斯-celery-docker-Postgres在将项目合并到docker中之前,一切都运行良好,但是一旦将其移入容器中,就开始出现问题。一开始一切正常,但过了一会儿我确实收到以下错误:celery-beat_1|ERROR:Pidfile(celerybeat.pid)alreadyexists.我已经为此苦苦挣扎了一段时间,但现在我真的放弃了。我不知道它有什么问题。docker文件:FROMpython:3.7ENVPYTHONUNBUFFERED1RUNmkdir-p/opt/services/djangoapp/srcCOPY/scripts/
应用程序包括:-Django-雷迪斯-celery-docker-Postgres在将项目合并到docker中之前,一切都运行良好,但是一旦将其移入容器中,就开始出现问题。一开始一切正常,但过了一会儿我确实收到以下错误:celery-beat_1|ERROR:Pidfile(celerybeat.pid)alreadyexists.我已经为此苦苦挣扎了一段时间,但现在我真的放弃了。我不知道它有什么问题。docker文件:FROMpython:3.7ENVPYTHONUNBUFFERED1RUNmkdir-p/opt/services/djangoapp/srcCOPY/scripts/
我已经成功地在herokucedarstack上运行resque并将接口(interface)挂载到rails上。当我启动worker时,一切正常。worker处理工作。但是当我杀死worker时,Resque仍然认为worker可用。当我启动另一个worker时,它认为有2个worker但实际上只有一个在运行。我也注意到这里的表格http://devcenter.heroku.com/articles/psheroku在杀死worker时发送SIGTERM,如果没有终止,则发送SIGKILL。这是我的worker日志2011-08-11T02:32:45+00:00heroku[wo
我已经成功地在herokucedarstack上运行resque并将接口(interface)挂载到rails上。当我启动worker时,一切正常。worker处理工作。但是当我杀死worker时,Resque仍然认为worker可用。当我启动另一个worker时,它认为有2个worker但实际上只有一个在运行。我也注意到这里的表格http://devcenter.heroku.com/articles/psheroku在杀死worker时发送SIGTERM,如果没有终止,则发送SIGKILL。这是我的worker日志2011-08-11T02:32:45+00:00heroku[wo
我对Celery很陌生,我以为我在某处读到过任务结果只会在有限的时间内保留。但是,在通过它运行大量任务后,我的后端(redis)变得非常臃肿。有没有办法为任务结果设置TTL,或者这是我需要手动清除(以及如何清除)的东西? 最佳答案 根据celery文档,您可以使用CELERY_IGNORE_RESULT完全忽略所有结果.您还可以使用CELERY_RESULT_EXPIRES在一定时间后使结果过期,默认为1天。在注释中它说这应该只适用于redis后端,而其他一些后端需要celerybeat才能运行。还有CELERY_MAX_CACHE