草庐IT

带 celery 的 django-socketio : send to socket after async task completes in separate process

如何在我的主要Django应用程序进程中访问Celery任务的结果?或者,如何从单独的进程发布到现有套接字连接?我有一个用户可以收到分数的应用程序。当记录分数时,会进行计算(目标进展等),并根据这些计算向感兴趣的用户发送通知。计算可能需要30秒以上,因此为了避免UI缓慢,这些操作通过Celery任务在后台进程中执行,由我的Score模型的post_save信号调用。理想情况下,我的Nofication模型上的post_save信号会向订阅的客户端发布消息(我正在使用django-socketio,gevent-socketio的包装器)。这看起来很简单......创建乐谱在后台进程中对

带 celery 的 django-socketio : send to socket after async task completes in separate process

如何在我的主要Django应用程序进程中访问Celery任务的结果?或者,如何从单独的进程发布到现有套接字连接?我有一个用户可以收到分数的应用程序。当记录分数时,会进行计算(目标进展等),并根据这些计算向感兴趣的用户发送通知。计算可能需要30秒以上,因此为了避免UI缓慢,这些操作通过Celery任务在后台进程中执行,由我的Score模型的post_save信号调用。理想情况下,我的Nofication模型上的post_save信号会向订阅的客户端发布消息(我正在使用django-socketio,gevent-socketio的包装器)。这看起来很简单......创建乐谱在后台进程中对

python - Django 模型不会保存到 Celery Task 中的数据库中

我遇到了一个非常糟糕的情况。我有以下设置。我有一个代表FSM的django模型djangoFSMfield我有一个celery任务,它发送一封电子邮件,然后推进主要对象FSM的状态。从celery任务的角度来看,对象“似乎”被保存了。但是从主django进程的角度来看,对象没有被更新。奇怪的是,辅助对象被正确保存到数据库中,稍后可以从主django进程访问。我在Celery任务的对象上显式调用了.save(),date_last_modified=models.DateTimeField(auto_now=True,null=True)字段有Celery任务中的时间戳比主线程晚,尽管我

python - Django 模型不会保存到 Celery Task 中的数据库中

我遇到了一个非常糟糕的情况。我有以下设置。我有一个代表FSM的django模型djangoFSMfield我有一个celery任务,它发送一封电子邮件,然后推进主要对象FSM的状态。从celery任务的角度来看,对象“似乎”被保存了。但是从主django进程的角度来看,对象没有被更新。奇怪的是,辅助对象被正确保存到数据库中,稍后可以从主django进程访问。我在Celery任务的对象上显式调用了.save(),date_last_modified=models.DateTimeField(auto_now=True,null=True)字段有Celery任务中的时间戳比主线程晚,尽管我

python - 如何检查 celery 结果后端是否正常工作

我正在使用带有Redis的celery。当前的Redis被用作代理和结果后端。BROKER_TRANSPORT='redis'BROKER_URL='redis://domain:8888/0'CELERY_RESULT_BACKEND='redis://domain:8888/0'我想清除一些东西:使用结果后端有什么好处?我的意思是我会通过使用它得到什么我如何才能看到它正在运行?我的意思是Redis中会存储一些东西吗?该存储将是永久性的吗?我该如何查询?存储空间会随着时间增长吗?我可以用celery花监控结果后端吗? 最佳答案 结

python - 如何检查 celery 结果后端是否正常工作

我正在使用带有Redis的celery。当前的Redis被用作代理和结果后端。BROKER_TRANSPORT='redis'BROKER_URL='redis://domain:8888/0'CELERY_RESULT_BACKEND='redis://domain:8888/0'我想清除一些东西:使用结果后端有什么好处?我的意思是我会通过使用它得到什么我如何才能看到它正在运行?我的意思是Redis中会存储一些东西吗?该存储将是永久性的吗?我该如何查询?存储空间会随着时间增长吗?我可以用celery花监控结果后端吗? 最佳答案 结

scala - Spark 上的 Redis :Task not serializable

我们在Spark上使用Redis来缓存我们的键值对。这是代码:importcom.redis.RedisClientvalr=newRedisClient("192.168.1.101",6379)valperhit=perhitFile.map(x=>{valarr=x.split("")valreadId=arr(0).toIntvalrefId=arr(1).toIntvalstart=arr(2).toIntvalend=arr(3).toIntvalrefStr=r.hmget("refStr",refId).get(refId).split(",")(1)valreadSt

scala - Spark 上的 Redis :Task not serializable

我们在Spark上使用Redis来缓存我们的键值对。这是代码:importcom.redis.RedisClientvalr=newRedisClient("192.168.1.101",6379)valperhit=perhitFile.map(x=>{valarr=x.split("")valreadId=arr(0).toIntvalrefId=arr(1).toIntvalstart=arr(2).toIntvalend=arr(3).toIntvalrefStr=r.hmget("refStr",refId).get(refId).split(",")(1)valreadSt

python - 任务 Celery 中的 RuntimeError : Never call result. get()

我正在使用celery将任务发送到远程服务器并尝试取回结果。使用update_state不断更新任务状态远程服务器上的方法。我正在使用发送任务app.send_task('task_name')获取celery任务的结果是一个阻塞调用,我不希望我的Django应用程序等待结果和超时。所以我尝试运行另一个celery任务来获得结果。@app.task(ignore_result=True)defcatpure_res(task_id):task_obj=AsyncResult(task_id)task_obj.get(on_message=on_msg)但它会导致以下错误。Traceba

python - 任务 Celery 中的 RuntimeError : Never call result. get()

我正在使用celery将任务发送到远程服务器并尝试取回结果。使用update_state不断更新任务状态远程服务器上的方法。我正在使用发送任务app.send_task('task_name')获取celery任务的结果是一个阻塞调用,我不希望我的Django应用程序等待结果和超时。所以我尝试运行另一个celery任务来获得结果。@app.task(ignore_result=True)defcatpure_res(task_id):task_obj=AsyncResult(task_id)task_obj.get(on_message=on_msg)但它会导致以下错误。Traceba