我试图从LinkedNode队列中取消特定元素。这是我迄今为止从另一个方法中获得的,它只是删除并返回队列中的第一个节点(因为它应该在队列中)。我的问题是如何编辑以便它将删除索引x处的元素?我包括javadoc psudocode希望有所帮助。
from celery.schedules import crontab
from celery.task import periodic_task
from django.utils import timezone
@periodic_task(run_every=crontab(minute='*/5'))
def delete_old_foos():
# Query all the foos in our database
foos = Foo.objects.all()
# Iterate through them
for foo in foos:
# If the expiration date is bigger than now delete it
if foo.expiration_date < timezone.now():
foo.delete()
# log deletion
return "completed deleting foos at {}".format(timezone.now())
答案 0 :(得分:0)
队列是一个队列,因为它有一个enqueue和一个dequeue方法,它们分别从队列的两端添加和删除。不保证队列提供其他功能。
如果要删除中间的特定元素,可以实现在队列上执行此的算法 - 例如,将除感兴趣元素之外的每个元素出列到另一个队列中,然后将它们全部排入原始队列。
但是,如果你要从数据结构中删除中间的元素,我怀疑你真的想要使用队列。在其他数据结构上有更高效的此操作实现,例如(无约束)链接列表或索引数据结构。