Bagaimana saya bisa menghapus semua tugas yang tertunda tanpa mengetahui task_id
untuk setiap tugas?
task
rabbitmq
celery
celery-task
nabizan
sumber
sumber
manage.py celery purge
(celeryctl
sekarang sudah usang dan akan hilang dalam 3.1).redis-cli KEYS "celery*" | xargs redis-cli DEL
yang bekerja untuk saya. Ini akan menghapus semua tugas yang disimpan di redis backend yang Anda gunakan.celery purge
(di dalam virtual env yang relevan). Ooops - ada jawaban dengan yang sama di bawah ini ..... stackoverflow.com/a/20404976/1213425-A
adalah aplikasi Django di manacelery.py
berada.Untuk seledri 3.0+:
Untuk membersihkan antrian tertentu:
sumber
celery -A proj purge
.Untuk Seledri 2.x dan 3.x:
Saat menggunakan pekerja dengan parameter -Q untuk menentukan antrian, misalnya
maka
celery purge
tidak akan berfungsi, karena Anda tidak dapat meneruskan parade antrian ke sana. Itu hanya akan menghapus antrian default. Solusinya adalah memulai pekerja Anda dengan--purge
parameter seperti ini:Namun ini akan menjalankan pekerja.
Pilihan lainnya adalah menggunakan sub-perintah amqp seledri
sumber
Dalam Seledri 3+:
CLI:
Secara terprogram:
http://docs.celeryproject.org/en/latest/faq.html#how-do-i-purge-all-waiting-tasks
sumber
Saya menemukan itu
celery purge
tidak bekerja untuk konfigurasi seledri saya yang lebih kompleks. Saya menggunakan beberapa antrian bernama untuk tujuan yang berbeda:Kolom pertama adalah nama antrian, yang kedua adalah jumlah pesan yang menunggu dalam antrian, dan yang ketiga adalah jumlah pendengar untuk antrian itu. Antriannya adalah:
Tugas analitik adalah tugas brute force yang bekerja sangat baik pada set data kecil, tetapi sekarang membutuhkan waktu lebih dari 24 jam untuk diproses. Kadang-kadang, ada sesuatu yang salah dan itu akan macet menunggu di database. Perlu ditulis ulang, tetapi sampai saat itu, ketika macet saya membunuh tugas, mengosongkan antrian, dan coba lagi. Saya mendeteksi "kebuntuan" dengan melihat jumlah pesan untuk antrian analitik, yang seharusnya 0 (analisis selesai) atau 1 (menunggu analitik semalam selesai). 2 atau lebih tinggi buruk, dan saya mendapat email.
celery purge
menawarkan untuk menghapus tugas dari salah satu antrian siaran, dan saya tidak melihat opsi untuk memilih antrian dengan nama yang berbeda.Inilah proses saya:
sumber
celeryctl purge
tidak bekerja dengan antrian bernama.python manage.py celery amqp queue.purge <queue_name>
melakukan. Saya pikir konteksnya bermanfaat bagi mereka yang memiliki pengaturan rumit, sehingga mereka dapat mengetahui apa yang harus mereka lakukan jikaceleryctl purge
gagal untuk mereka.manage.py
di Seledri 3.1.17 saya, apakah file sudah dihapus atau baru dipukul? Saya menemukan apa yang tampak seperti antarmuka yang sesuai (queue.purge
) di*/bin/amqp.py
. Tetapi setelah mencoba menghubungkan isi file dengan dokumentasi, saya harus menyesal mengakui bahwa Celery sangat tidak berdokumen dan juga bagian dari pekerjaan yang sangat berbelit-belit, paling tidak menilainya dengan kode sumbernya.manage.py
adalah skrip manajemen Django, danmanage.py celery
menjalankan seledri setelah memuat konfigurasi dari pengaturan Django. Saya belum pernah menggunakan seledri di luar Django, tetapicelery
perintah yang disertakan mungkin apa yang Anda cari: celery.readthedocs.org/en/latest/userguide/monitoring.htmlDalam Seledri 3+
http://docs.celeryproject.org/en/3.1/faq.html#how-do-i-purge-all-waiting-tasks
CLI
Bersihkan nama antrian:
Bersihkan antrian yang dikonfigurasi
Jadi untuk membersihkan seluruh pekerja antrian harus dihentikan.
sumber
Jika Anda ingin menghapus semua tugas yang tertunda dan juga yang aktif dan dicadangkan untuk sepenuhnya menghentikan Seledri, inilah yang bekerja untuk saya:
sumber
1. Untuk membersihkan antrian tugas menunggu dengan benar, Anda harus menghentikan semua pekerja ( http://celery.readthedocs.io/en/latest/faq.html#i-ve-purged-messages-but-there-are- still-messages-left-in-the-queue ):
atau (dalam kasus RabbitMQ / broker pesan dikelola oleh Supervisor):
2. ... lalu bersihkan tugas dari antrian tertentu:
3. Mulai RabbitMQ:
atau (dalam kasus RabbitMQ dikelola oleh Supervisor):
sumber
selery 4+ perintah selery purge untuk membersihkan semua antrian tugas yang dikonfigurasi
secara terprogram:
semua tugas yang tertunda akan dihapus. Referensi: celerydoc
sumber