সেলারি / খরগোশকে সমস্ত বিচারাধীন কাজ মুছে ফেলা হচ্ছে


199

task_idপ্রতিটি কাজের জন্য না জেনে আমি কীভাবে সমস্ত মুলতুবি কাজ মুছে ফেলতে পারি ?

উত্তর:


296

দস্তাবেজগুলি থেকে :

$ celery -A proj purge

অথবা

from proj.celery import app
app.control.purge()

(সম্পাদনা: বর্তমান পদ্ধতির সাথে আপডেট হয়েছে))


56
অথবা, সেলারি 3.0+ এর জন্য জাজানো থেকে: manage.py celery purge( celeryctlএখন অবমূল্যায়ন করা হয়েছে এবং 3.1-এ চলে যাবে)।
হেনরিক হিমবুর্গের

3
রেডিস ব্যাকএন্ডের মাধ্যমে কীভাবে এটি করবেন তা সন্ধান করে আমি এই উত্তরটি পেয়েছি। আমার কাছে পাওয়া সেরা পদ্ধতিটি ছিল redis-cli KEYS "celery*" | xargs redis-cli DELআমার জন্য কাজ করে। এটি আপনার ব্যবহার করা রেডিস ব্যাকএন্ডে সঞ্চিত সমস্ত কাজ মুছে ফেলবে।
মেলগাইনাস

1
আমি সেলারি 3.0 এ এটি কীভাবে করতে পারি?
লুয়েস্টম

2
আমার জন্য, এটি কেবল celery purge(প্রাসঙ্গিক ভার্চুয়াল এনভির ভিতরে) ছিল। ওহো - সেখানে নিচের একই ..... সাথে একটা উত্তর stackoverflow.com/a/20404976/1213425
Erve1879

জাজানোর সাথে মিলিয়ে সেলারি 4.0+ এর জন্য এটি আবার এই কমান্ড, যেখানে যুক্তিটি -Aজ্যাঙ্গো অ্যাপ্লিকেশনটি যেখানে celery.pyঅবস্থিত।
গীতারিক

120

সেলারি 3.0+ এর জন্য:

$ celery purge

একটি নির্দিষ্ট সারি শুদ্ধ করতে:

$ celery -Q queue_name purge

9
আপনি যদি সংযোগ ত্রুটি পেয়ে থাকেন তবে নিশ্চিত হয়ে নিন যে আপনি অ্যাপটি নির্দিষ্ট করেছেন celery -A proj purge
কামিল সিন্ধি

25

সেলারি 2.x এবং 3.x এর জন্য:

উদাহরণস্বরূপ, কিউ নির্ধারণ করতে -Q প্যারামিটার সহ কর্মী ব্যবহার করার সময়

celery worker -Q queue1,queue2,queue3

তাহলে celery purgeকাজ করবে না, কারণ আপনি এটিতে সারি প্যারামগুলি পাস করতে পারবেন না। এটি কেবলমাত্র ডিফল্ট সারি মুছে ফেলবে। সমাধানটি হ'ল আপনার কর্মীদের --purgeএই জাতীয় প্যারামিটার দিয়ে শুরু করা :

celery worker -Q queue1,queue2,queue3 --purge

এটি তবে কর্মী চালাবে।

অন্যান্য বিকল্প হ'ল সেলারি এর এমএকপি সাব-কম্যান্ড ব্যবহার করা

celery amqp queue.delete queue1
celery amqp queue.delete queue2
celery amqp queue.delete queue3

হ্যাঁ, এটি সেলারিটির পুরানো সংস্করণগুলির (2.x এবং সম্ভবত 3.x) জন্য। আমি উত্তরটি সম্পাদনা করতে পারি না
স্মিডো


9

আমি দেখতে পেয়েছি যে celery purgeআমার আরও জটিল সেলারি কনফিগারেশনের জন্য কাজ করে না। আমি বিভিন্ন উদ্দেশ্যে একাধিক নামকৃত সারি ব্যবহার করি:

$ sudo rabbitmqctl list_queues -p celery name messages consumers
Listing queues ...  # Output sorted, whitespaced for readability
celery                                          0   2
celery@web01.celery.pidbox                      0   1
celery@web02.celery.pidbox                      0   1
apns                                            0   1
apns@web01.celery.pidbox                        0   1
analytics                                       1   1
analytics@web01.celery.pidbox                   0   1
bcast.361093f1-de68-46c5-adff-d49ea8f164c0      0   1
bcast.a53632b0-c8b8-46d9-bd59-364afe9998c1      0   1
celeryev.c27b070d-b07e-4e37-9dca-dbb45d03fd54   0   1
celeryev.c66a9bed-84bd-40b0-8fe7-4e4d0c002866   0   1
celeryev.b490f71a-be1a-4cd8-ae17-06a713cc2a99   0   1
celeryev.9d023165-ab4a-42cb-86f8-90294b80bd1e   0   1

প্রথম কলামটি সারির নাম, দ্বিতীয়টি সারিতে অপেক্ষা করা বার্তাগুলির সংখ্যা এবং তৃতীয়টি সেই সারিটির শ্রোতার সংখ্যা। সারিগুলি হ'ল:

  • সেলারি - মানক, আদর্শবান সেলারি কাজের জন্য সারি
  • অ্যাপস - অ্যাপল পুশ নোটিফিকেশন পরিষেবাদির কাজগুলির জন্য সারি, আদর্শ হিসাবে যথেষ্ট নয়
  • বিশ্লেষণ - দীর্ঘ চলমান রাতের বিশ্লেষণের জন্য সারি
  • * .পিডবক্স - শাটডাউন এবং পুনরায় সেট করার মতো কর্মী আদেশের জন্য সারি, প্রতি শ্রমিকের জন্য একজন (২ জন সেলারি শ্রমিক, একটি অ্যাপস কর্মী, একজন বিশ্লেষণ কর্মী)
  • বিস্কুট। * - একটি কাতারে শোনার জন্য সমস্ত কর্মীদের বার্তা প্রেরণের জন্য ক্রেডিট সম্প্রচার করুন (এটি ধরার আগে প্রথমের চেয়ে)
  • সেলারিভ। * - কার্য বিশ্লেষণ রিপোর্ট করার জন্য সিলারি ইভেন্টের সারি

অ্যানালিটিক্স টাস্ক হ'ল একটি নিদারুণ শক্তি কাজ যা ছোট ডেটা সেটগুলিতে দুর্দান্ত কাজ করেছে তবে এটি প্রক্রিয়া করতে এখন 24 ঘন্টােরও বেশি সময় নেয়। কখনও কখনও, কিছু ভুল হয়ে যায় এবং এটি ডাটাবেসের অপেক্ষায় আটকে যায়। এটি আবার লেখা দরকার, তবে ততক্ষণে যখন এটি আটকে যায় তখন আমি টাস্কটি মেরে ফেলেছি, সারিটি খালি করে আবার চেষ্টা করি। বিশ্লেষণের সারির বার্তা গণনা দেখে আমি "অচলতা" সনাক্ত করেছি, যা 0 (সমাপ্ত বিশ্লেষণ) বা 1 হওয়া উচিত (শেষ রাতের বিশ্লেষণ শেষ হওয়ার অপেক্ষায়)। 2 বা ততোধিকতর খারাপ, এবং আমি একটি ইমেল পাই।

celery purge ব্রডকাস্ট সারির একটি থেকে কাজ মুছে ফেলার প্রস্তাব দেয় এবং আমি কোনও আলাদা নামযুক্ত সারিতে বাছাই করার বিকল্প দেখতে পাচ্ছি না।

আমার প্রক্রিয়াটি এখানে:

$ sudo /etc/init.d/celeryd stop  # Wait for analytics task to be last one, Ctrl-C
$ ps -ef | grep analytics  # Get the PID of the worker, not the root PID reported by celery
$ sudo kill <PID>
$ sudo /etc/init.d/celeryd stop  # Confim dead
$ python manage.py celery amqp queue.purge analytics
$ sudo rabbitmqctl list_queues -p celery name messages consumers  # Confirm messages is 0
$ sudo /etc/init.d/celeryd start

যদিও উত্তর নেই, তাই না? খুব তথ্যপূর্ণ তবে!
amn

4
celeryctl purgeনামযুক্ত সারিতে কাজ করে নি। python manage.py celery amqp queue.purge <queue_name>করেছিল. আমি মনে করি জটিল সেটআপগুলি রয়েছে তাদের জন্য প্রসঙ্গটি দরকারী, যাতে celeryctl purgeব্যর্থ হলে তাদের কী করা উচিত তা তারা নির্ধারণ করতে পারেন ।
jwitlock

আমি manage.pyআমার সেলারি 3.1.17 এ খুঁজে পাচ্ছি না , ফাইলটি সরানো হয়েছে বা কেবল নতুন চমকপ্রদ হয়েছে? যাইহোক, সম্পর্কিত ইন্টারফেসের ( queue.purge) এর মতো দেখতে আমি খুঁজে পেয়েছি */bin/amqp.py। তবে ডকুমেন্টেশনের সাথে ফাইলের বিষয়বস্তুগুলির সাথে সম্পর্ক স্থাপন করার চেষ্টা করার পরে, আমি আফসোস করে স্বীকার করতে হবে যে সেলারিটি হ'ল হতাশাজনকভাবে অননুমোদিত এবং এটির একটি খুব সংশ্লেষিত টুকরো টুকরোও অন্তত এর উত্স কোড অনুসারে বিচার করে jud
amn

manage.pyএটি জ্যাঙ্গো পরিচালনা স্ক্রিপ্ট, এবং manage.py celeryজ্যাঙ্গো সেটিংস থেকে কনফিগারেশন লোড করার পরে সেলারি চালায়। আমি জ্যাঙ্গোর বাইরে সেলারি ব্যবহার করি নি, তবে অন্তর্ভুক্ত celeryকমান্ডটি আপনি যা খুঁজছেন তা হতে পারে: সেলারি.ড্রেটহেডসস.আর.ইন
স্লেট

5

সেলারি 3+ এ

http://docs.celeryproject.org/en/3.1/faq.html#how-do-i-purge-all-waiting-tasks

CLI

নাম সারিটি পুরা করুন:

 celery -A proj amqp queue.purge <queue name>

কনফিগার করা সারিটি মুছুন

celery -A proj purge

আমি বার্তাগুলি শুদ্ধ করেছি, তবে কি সারিতে এখনও বার্তা রয়েছে? উত্তর: কার্য সম্পাদন করার সাথে সাথে কার্যগুলি স্বীকার করা হয় (সারি থেকে সরিয়ে দেওয়া)। শ্রমিকের কোনও কাজ পাওয়ার পরে, এটি বাস্তবায়িত হওয়ার আগ পর্যন্ত কিছুটা সময় লাগবে, বিশেষত যদি ইতিমধ্যে কার্যকর করার জন্য অনেকগুলি কাজ ইতিমধ্যে অপেক্ষা করে থাকে। ব্রোকারের (এএমকিউপি সার্ভার) সংযোগ বন্ধ না করা পর্যন্ত যে বার্তাগুলি স্বীকৃত নয় সেগুলি কর্মী দ্বারা ধরে রাখা হয়। যখন সেই সংযোগটি বন্ধ হয়ে যায় (উদাহরণস্বরূপ শ্রমিকটি থামানো হয়েছিল) কাজগুলি ব্রোকারের দ্বারা পরবর্তী উপলব্ধ কর্মীর কাছে পুনরায় পাঠানো হবে (বা একই কর্মী পুনরায় চালু করার পরে), সুতরাং অপেক্ষার কাজগুলির সারিটি সঠিকভাবে পরিস্কার করার জন্য সমস্ত কর্মীদের থামাতে হবে, এবং তারপরে সেলারি.কন্ট্রোল.পুরজ () ব্যবহার করে কার্যগুলি মুছে ফেলতে হবে।

সুতরাং পুরো কাতারে শোধ করার জন্য শ্রমিকদের থামাতে হবে।


5

আপনি যদি সেলেরি সম্পূর্ণরূপে বন্ধ করার জন্য সমস্ত মুলতুবি কাজগুলি এবং সক্রিয় এবং সংরক্ষিতগুলিও সরাতে চান, এটি আমার পক্ষে কাজ করেছে:

from proj.celery import app
from celery.task.control import inspect, revoke

# remove pending tasks
app.control.purge()

# remove active tasks
i = inspect()
jobs = i.active()
for hostname in jobs:
    tasks = jobs[hostname]
    for task in tasks:
        revoke(task['id'], terminate=True)

# remove reserved tasks
jobs = i.reserved()
for hostname in jobs:
    tasks = jobs[hostname]
    for task in tasks:
        revoke(task['id'], terminate=True)

2

1. সঠিকভাবে অপেক্ষার কাজের সারিটি মুছে ফেলার জন্য আপনাকে সমস্ত কর্মীদের থামাতে হবে ( http://celery.readthedocs.io/en/latest/faq.html#i-ve-purged-messages-but-there-are- এখনও-বার্তাগুলি-মধ্যে-সারিটি বামে ):

$ sudo rabbitmqctl stop

বা (রাবিট এমকিউ / বার্তা ব্রোকার সুপারভাইজার দ্বারা পরিচালিত ক্ষেত্রে):

$ sudo supervisorctl stop all

২ ... এবং তারপরে একটি নির্দিষ্ট সারি থেকে কার্যগুলি মুছে ফেলুন:

$ cd <source_dir>
$ celery amqp queue.purge <queue name>

3. র‌্যাবিট এমকিউ শুরু করুন:

$ sudo rabbitmqctl start

বা (যদি খরগোশ এমকিউ সুপারভাইজার দ্বারা পরিচালিত হয়):

$ sudo supervisorctl start all

2

সমস্ত কনফিগার করা টাস্কের সারিগুলি মুছে ফেলার জন্য সেলারি 4+ সেলারি পার্জ কমান্ড

celery -A *APPNAME* purge

প্রোগ্রামেটিক্যালি:

from proj.celery import app
app.control.purge()

সমস্ত মুলতুবি কাজ মুছে ফেলা হবে। তথ্যসূত্র: সেলারিডোক

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.