我有一个web应用程序,在这个应用程序中我试图使用celeri从数据库加载后台任务。我目前正在根据请求加载数据库,但希望每小时加载一次任务,并让他们在后台工作。我正在使用flask并用python编写代码。我也运行redis。在
到目前为止,我用芹菜让工人处理任务,并让节拍每隔一段时间将任务发送给工人。但是我想从worker检索结果[一个数据帧或查询],如果结果还没有准备好,那么它应该加载worker之前的结果。在
有什么办法吗?在
编辑
我使用sqlalchemy从数据库检索结果,并在网页中呈现结果。我有我的主页,它有所有的不同的链接,所有导致不同的图形,我想在后台加载,这样用户不必等待很长的加载时间。在
芹菜Task正在由一个工人执行,它的结果存储在Celery Backend中。在
如果我没听错的话,我想你只有几个选择:
你可以找result of a task if you provide it's id。当您想知道状态时,可以这样做,比如(其中
celery
是Celery应用程序):result = celery.AsyncResult(<the task id>)
当新结果准备就绪时,使用callback进一步更新。
我个人在类似的情况下使用了选项1(使用MongoDB),发现它非常易于维护和灵活。但是,由于用户界面的特性,选项3可能更适合您的需要。在
相关问题 更多 >
编程相关推荐