Celery: Tidak dapat menjalankan tugas di bawah Windows

Dibuat pada 8 Jun 2017  ·  13Komentar  ·  Sumber: celery/celery

Seledri 4.x dimulai (dengan perbaikan # 4078) tetapi semua tugas macet

Langkah-langkah untuk mereproduksi

Gunakan tutorial Langkah Pertama (http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html)

seledri -Pekerja tugas --loglevel = info
add.delay (2,2)

Perilaku yang diharapkan

Tugas dijalankan dan hasil 4 dihasilkan

Perilaku sebenarnya

Seledri pecah.

"C: \ Program Files \ Python36 \ Scripts \ celery.exe" -A perse.celery pekerja -l info

-------------- seledri @ PETRUS v4.0.2 (panggilan laten)


--- * * * - Windows-10-10.0.14393-SP0 2017-06-08 15:31:22


  • ** ---------- [config]
  • ** ----------.> app: perse: 0x24eecc088d0
  • * ----------.> transport: amqp: // guest : * @ localhost: 5672 //
  • ** ----------.> hasil: rpc: //
  • * --- * ---.> konkurensi: 12 (prefork)- * ** ----.> peristiwa tugas: OFF (aktifkan -E untuk memantau tugas di pekerja ini)

-------------- [antrian]
.> tukar seledri = seledri (langsung) kunci = seledri

[tugas]
. perse.tasks.celery_add

[08-06-2017 15: 31: 22,685: INFO / MainProcess] Terhubung ke amqp: // guest : *@127.0.0.1: 5672 //[08-06-2017 15: 31: 22,703: INFO / MainProcess] mingle: mencari tetangga[08-06-2017 15: 31: 23,202: INFO / SpawnPoolWorker-5] proses turunan 5124 memanggil self.run ()[08-06-2017 15: 31: 23,207: INFO / SpawnPoolWorker-4] proses turunan 10848 memanggil self.run ()[08-06-2017 15: 31: 23,208: INFO / SpawnPoolWorker-10] proses turunan 5296 memanggil self.run ()[08-06-2017 15: 31: 23,214: INFO / SpawnPoolWorker-1] proses turunan 5752 memanggil self.run ()[08-06-2017 15: 31: 23,218: INFO / SpawnPoolWorker-3] proses turunan 11868 memanggil self.run ()[08-06-2017 15: 31: 23,226: INFO / SpawnPoolWorker-11] proses turunan 9544 memanggil self.run ()[08-06-2017 15: 31: 23,227: INFO / SpawnPoolWorker-6] proses turunan 16332 memanggil self.run ()[08-06-2017 15: 31: 23,229: INFO / SpawnPoolWorker-8] proses turunan 3384 memanggil self.run ()[08-06-2017 15: 31: 23,234: INFO / SpawnPoolWorker-12] proses turunan 8020 memanggil self.run ()[08-06-2017 15: 31: 23,241: INFO / SpawnPoolWorker-9] proses turunan 15612 memanggil self.run ()[08-06-2017 15: 31: 23,243: INFO / SpawnPoolWorker-7] proses turunan 9896 memanggil self.run ()[08-06-2017 15: 31: 23,245: INFO / SpawnPoolWorker-2] proses anak 260 memanggil self.run ()[08-06-2017 15: 31: 23,730: INFO / MainProcess] mingle: all alone[08-06-2017 15: 31: 23,747: INFO / MainProcess] seledri @ PETRUS ready.[08-06-2017 15: 31: 49,412: INFO / MainProcess] Menerima tugas: perse.tasks.celery_add [524d788e-e024-493d-9ed9-4b009315fea3][08-06-2017 15: 31: 49,416: ERROR / MainProcess] Penangan tugas memunculkan kesalahan: ValueError ('tidak cukup nilai untuk dibongkar (diharapkan 3, mendapat 0)',)Traceback (panggilan terakhir terakhir):File "c: \ program files \ python36 \ lib \ site-packages \ billiard \ pool.py", baris 359, di workloophasil = (Benar, prepared_result (menyenangkan ( args, ** kwargs)))
File "c: \ program files \ python36 \ lib \ site-packages \ celery \ app \ trace.py", baris 518, di _fast_trace_task
tugas, terima, nama host = _loc
ValueError: nilai tidak cukup untuk dibongkar (diharapkan 3, didapat 0)

Memperbaiki

Lihat permintaan tarik # 4078

Documentation Windows Not a Bug

Komentar yang paling membantu

Saya harus mengkonfirmasi: Bug ini muncul di

Celery 4.1.0
Windows 10 Enterprise 64 bit

saat menjalankan perintah celery -A <mymodule> worker -l info

dan solusi berikut berfungsi:

pip install eventlet
celery -A <mymodule> worker -l info -P eventlet

Semua 13 komentar

FWIW Saya bekerja di sekitar ini dengan menggunakan implementasi eventlet pool (opsi baris perintah "-P eventlet").

Solusi @drewdogg harus disebutkan dalam tutorial.

Saya harus mengkonfirmasi: Bug ini muncul di

Celery 4.1.0
Windows 10 Enterprise 64 bit

saat menjalankan perintah celery -A <mymodule> worker -l info

dan solusi berikut berfungsi:

pip install eventlet
celery -A <mymodule> worker -l info -P eventlet

itu cukup untuk mendefinisikan variabel lingkungan FORKED_BY_MULTIPROCESSING = 1 untuk instance pekerja.

@auvipy Bekerja untuk saya, terima kasih.

@auvipy itu benar-benar menyelesaikan masalah :) 👍
Menambahkan:
impor os
os.environ.setdefault ('FORKED_BY_MULTIPROCESSING', '1')
sebelum menentukan contoh Celery adalah enougth

mungkin ini harus disebutkan di dokumen? @wonderfulcess care untuk mengirim permintaan tarik?

@jamur_kejang

Terima kasih banyak

@auvipy itu benar-benar menyelesaikan masalah
Menambahkan:
impor os
os.environ.setdefault ('FORKED_BY_MULTIPROCESSING', '1')
sebelum menentukan contoh Celery adalah enougth

Terima kasih itu berhasil!

@auvipy jika ini hanya satu baris kode untuk diperbaiki, lalu mengapa tidak memperbaikinya di dalam seledri, daripada menggunakan dokumen untuk merekomendasikan pengguna menerapkan solusi? Mengapa bug yang sepenuhnya merusak platform dengan perbaikan sederhana seperti itu masih menjadi masalah setelah hampir 2 tahun?

Dimana mau taruh seledri ini? Saya yakin ini cocok untuk instruksi khusus windows. jika Anda ingin memperbaikinya di level kode, datanglah dengan PR yang sesuai.

@auvipy itu benar-benar menyelesaikan masalah :) 👍
Menambahkan:
impor os
os.environ.setdefault ('FORKED_BY_MULTIPROCESSING', '1')
sebelum menentukan contoh Celery adalah enougth

Anda luar biasa, terima kasih banyak!

@auvipy Saya telah mencari jawaban untuk masalah ini, saya telah menghabiskan banyak waktu untuk mencoba memperbaikinya, terima kasih banyak

Apakah halaman ini membantu?
0 / 5 - 0 peringkat