我意识到芹菜的Redis后端将每个任务请求存储在队列下的列表中。正如我必须iterate through all tasks in the list and make comparison by matching value那样,这使删除(中止)挂起的任务效率非常低下。我可以批量处理删除作业,但是由于时间上的限制,在工作人员接任务之前,它没有太大帮助。
因此,我想出的解决方案是为每个任务设置唯一的队列,例如计数(“ 1”,“ 2”,“ 3”)。使用前缀是不可能的,因为amqp code for celery worker doesn't support prefix or regex matching for queue names.。因此,我们假设通过广播或<button id='hideShow' class='hide' type='button'>Contact Us</button>
<form>
<fieldset id='contact'>
<legend>Contact Us</legend>
<label for='email'>Email: </label><br>
<input type='email'><br>
<label for='email'>Comment: </label><br>
<textarea></textarea><br>
<button type='submit'>Send</button>
</fieldset>
</form>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
函数来处理此问题,以在工作线程上动态重新分配队列。
使用这种方法时,我还可能遇到哪些其他陷阱?还是有一种有效删除待处理任务的方法?