立即打印 Celery 中编程任务的任务 ID Python
Print immediately Task Id of a programmed Task in Celery for Python
当我在 Django 中从我的视图发送编程任务时,我需要立即获取 task.id 如果我需要在一秒钟内撤销。
比如我的观点:
@login_required
def program_task(request, pk):
member = get_object_or_404(Post_Blog, pk=pk)
if request.method == "POST":
form = PostProgrammaForm(request.POST)
if form.is_valid():
action = form.save(commit=False)
action.account_id = member.pk
action.programmed = 1
year= action.dataprogrammato.year
month= action.dataprogrammato.month
day= action.dataprogrammato.day
hourz = action.oraprogrammato.hour
hour= oraz - 2 ##this is for timezone :D
minute= action.oraprogrammato.minute
quando = datetime(year, month, day, hour, minute)
action.save()
if action.programmed == True:
tasksend.apply_async(args=(action.id), eta=quando)
### here it send task and work, but I need to know here the task.id
return redirect('blog_action', pk=member.pk)
else:
form = PostProgrammaForm(request.POST)
return render(request, 'FBIsystem/post_program.html', {'form': form, 'member':member})
现在,我的 celery py 是这样的:
app = Celery()
@app.task(bind=True)
def tasksend(self, action_id):
###do somethig
一切正常,我保存了表单并发送了任务,但是...
如果我为明天编写 post 并且我需要在它之前撤销任务 运行 我该怎么办?
请帮忙
谢谢
apply_async
returns celery.result.AsyncResult
的任务实例 id
task = tasksend.apply_async(args=(action.id), eta=quando)
print(task.id)
当我在 Django 中从我的视图发送编程任务时,我需要立即获取 task.id 如果我需要在一秒钟内撤销。
比如我的观点:
@login_required
def program_task(request, pk):
member = get_object_or_404(Post_Blog, pk=pk)
if request.method == "POST":
form = PostProgrammaForm(request.POST)
if form.is_valid():
action = form.save(commit=False)
action.account_id = member.pk
action.programmed = 1
year= action.dataprogrammato.year
month= action.dataprogrammato.month
day= action.dataprogrammato.day
hourz = action.oraprogrammato.hour
hour= oraz - 2 ##this is for timezone :D
minute= action.oraprogrammato.minute
quando = datetime(year, month, day, hour, minute)
action.save()
if action.programmed == True:
tasksend.apply_async(args=(action.id), eta=quando)
### here it send task and work, but I need to know here the task.id
return redirect('blog_action', pk=member.pk)
else:
form = PostProgrammaForm(request.POST)
return render(request, 'FBIsystem/post_program.html', {'form': form, 'member':member})
现在,我的 celery py 是这样的:
app = Celery()
@app.task(bind=True)
def tasksend(self, action_id):
###do somethig
一切正常,我保存了表单并发送了任务,但是... 如果我为明天编写 post 并且我需要在它之前撤销任务 运行 我该怎么办?
请帮忙 谢谢
apply_async
returns celery.result.AsyncResult
的任务实例 id
task = tasksend.apply_async(args=(action.id), eta=quando)
print(task.id)