>>> add.delay(4,6) # 执行函数 <AsyncResult: 4b5a8ab6-693c-4ce5-b779-305cfcdf70cd> # 返回taskid >>> result = add.delay(4,6) # 执行函数 >>> result.get() # 同步获取结果,一直等待 10 >>> result.get(timeout=1) # 设置超时时间,过期错误异常 Traceback (most recent call last)...
taskId = 1 result_file_name = '/var/www/dba_api/api/test/'+ str(taskId) + '.csv' contentInfo = json.dumps({"taskId":1,"opType":"continue","serviceGroupName":serviceGroupName,"dbHost":dbHost,"dbPasswd":dbPasswd,"dbUser":dbUser,"dbPort":dbPort}) result = getServiceInfo.apply_...
在官方文档上,意思是 get() 和 forget() 方法都可以释放资源,但是经过我测试,貌似只有 forget() 函数会释放资源 查看是否资源被释放也很简单,登录到对应的 backend,我这里是 redis,使用 redis-cli 或者通过 docker 进入 redis: select 1 keys* 查看相应的 task id 是否还在列表就可以知道该资源是否被释放 如果...
fromcelery_task.order_taskimportsckill_task fromcelery_task.celeryimportapp fromcelery.resultimportAsyncResult classSckillView(ViewSet): @action(methods=['GET'], detail=False) defsckill(self, request): a = request.query_params.get('id') # 使用异步,提交一个秒杀任务 res = sckill_task.delay(...
所有task 运行的结果都会被冠以celery-task-meta-前缀,后面加上的是 task_id。 因为每条数据都是存储的 string 类型的数据,所以可以直接使用 get 命令获取结果: get celery-task-meta-5592a992-2035-49b2-9af2-3e79e50a22a1 返回的结果会有 状态字段 status,函数返回结果 result,任务id task_id 等信息。
task.delay("古明地觉", 17) print( time.perf_counter() - start ) # 0.11716766700000003 然后执行该文件,发现只用了 0.12 秒,而 task 里面明明 sleep 了 3 秒。所以说明这一步是不会阻塞的,调用 task.delay 只是创建一个任务并发送至队列。我们再看一下 worker 的输出信息: ...
task_id='93288a00-94ee-4727-b815-53dc3474cf3f'In:add.AsyncResult(task_id).get()Out:4 或者: In:fromcelery.resultimportAsyncResultIn:AsyncResult(task_id).get()Out:4 指定队列 Celery非常容易设置和运行,通常它会使用默认的名为celery的队列(可以通过CELERY_DEFAULT_QUEUE修改)用来存放任务。我们可以使用...
id,两种方式均可print(res.task_id)print(res.id)"""4bd48a6d-1f0e-45d6-a225-6884067253c34bd48a6d-1f0e-45d6-a225-6884067253c3"""# 获取任务执行结束时的时间# 任务还没有结束, 所以返回Noneprint(res.date_done)"""None"""# 获取任务的返回值, 可以通过 result 或者 get()# 注意: 如果是 ...
Celery doesn’t update the state when a task is sent, and any task with no history is assumed to be pending (you know the task id, after all). 所有的任务默认都是等待中状态,比命名为未知好不到那里去。芹菜不会在任务发送时更新其状态,任何没有历史信息的都假设为等待中(仅知道任务标识)。
@app.task defadd(x,y):time.sleep(3)# 模拟耗时操作 s=x+yprint("主机IP {}: x + y = {}".format(get_host_ip(),s))returns 启动这个 worker: 代码语言:javascript 复制 celery-Amy_first_celery worker-l info 这里,-A 表示我们的程序的模块名称,worker 表示启动一个执行单元,-l 是批 -level...