मेरे कुछ रिमोट Celery कार्य कभी मेरे ब्रोकर (RabbitMQ) पर नहीं लगते हैं। यादृच्छिक रूप से होने के लिए यह appears
। वहाँ अपने लॉग में नहीं त्रुटियाँ हैं और वे कभी नहीं यह श्रमिकों के लिए कर सकते हैं या असफल। फूल/खरगोश कभी कार्य विफलता की रिपोर्ट नहीं करता है।अंतर स्पॉट करें, सेलेरी टास्क अनियमितता के साथ यादृच्छिक रूप से विफल रहता है
मैं कार्यों (client)
भेजने एपीआई पर यातायात की निगरानी के लिए tcpflow -p -c -i eth0 port 5672
इस्तेमाल किया।
(संवेदनशील हटाया डेटा)
192.018.000.002.42738-052.048.150.171.05672: AMQP
052.048.150.171.05672-192.018.000.002.42738:
capabilitiesFpublisher_confirmstexchange_exchange_bindingst
basic.nacktconsumer_cancel_notifytconnection.blockedtconsumer_prioritiestau[email protected]d8b85eb5ab91copyrightS.Copyright (C) 2007-2015 Pivotal Software, Inc.informationS5Licensed under the MPL. See http://www.rabbitmq.com/platformS
Erlang/OTPproductSRabbitMQversionS3.6.0PLAIN AMQPLAINen_US
192.018.000.002.42738-052.048.150.171.05672:
nproductSpy-amqpproduct_versionS1.4.9capabilitiesF.connection.blockedtconsumer_cancel_notifytAMQPLAIN1LOGINSusernamePASSWORDSxxxxxxen_US
052.048.150.171.05672-192.018.000.002.42738:
<
192.018.000.002.42738-052.048.150.171.05672:
192.018.000.002.42738-052.048.150.171.05672:
(/
052.048.150.171.05672-192.018.000.002.42738:
)
192.018.000.002.42738-052.048.150.171.05672:
052.048.150.171.05672-192.018.000.002.42738:
192.018.000.002.42738-052.048.150.171.05672: $(
estimate_geometrydirect
052.048.150.171.05672-192.018.000.002.42738: (
192.018.000.002.42738-052.048.150.171.05672: 2
estimate_geometry
052.048.150.171.05672-192.018.000.002.42738: 2estimate_geometry
192.018.000.002.42738-052.048.150.171.05672: G2estimate_geometryestimate_geometrytasks.estimate_geometry
052.048.150.171.05672-192.018.000.002.42738: 2
192.018.000.002.42738-052.048.150.171.05672: 1<(estimate_geometrytasks.estimate_geometry
192.018.000.002.42738-052.048.150.171.05672: <application/x-python-serializebinary$021e5308-e6ac-43eb-9a06-8473ba386802$bedeb08f-9614-38b1-9b60-9eded43c3c71
192.018.000.002.42738-052.048.150.171.05672: }q(UexpiresqNUutcqUargsq]qCaUchordqNUcallbacksqNUerrbacksqNUtasksetqNUidq
Utasks.estimate_geometryqUtimelimitqNNUetaqNUkwargsq}qu.
192.018.000.002.42738-052.048.150.171.05672: (
segment_imagedirect
052.048.150.171.05672-192.018.000.002.42738: (
192.018.000.002.42738-052.048.150.171.05672: 2
segment_image
segment_image71.05672-192.018.000.002.42738: 2
segment_imagetasks.segment_image0.171.05672: ;2
052.048.150.171.05672-192.018.000.002.42738: 2
segment_imagetasks.segment_image0.171.05672:)<(
192.018.000.002.42738-052.048.150.171.05672: <application/x-python-serializebinary$45280975-9611-41e1-bf99-388cdf1b7064$bedeb08f-9614-38b1-9b60-9eded43c3c71
192.018.000.002.42738-052.048.150.171.05672: }q(UexpiresqNUutcqUargsq]qCaUchordqNUcallbacksqNUerrbacksqNUtasksetqNUidq
Utasks.segment_imageqUtimelimitqNNUetaqNUkwargsq}qu.skq
यह एक कार्यों के लिए जो यह दलाल कर सकते हैं किसी को भी बना देता है कभी नहीं है:
API सफलतापूर्वक एक कार्य बाहर जाने वाले यातायात भेजता है रिकॉर्ड इस प्रकार है अंतर स्पॉट करें और मुझे बताएं कि क्या गलत है?
192.018.000.002.35908-052.017.119.221.05672: 1<(estimate_geometrytasks.estimate_geometry
192.018.000.002.35908-052.017.119.221.05672: <application/x-python-serializebinary$206c1ae0-43d0-4031-bac6-92d2df92b13c$f4c7420c-b9c2-3525-bd5a-d5955f884f43
192.018.000.002.35908-052.017.119.221.05672: }q(UexpiresqNUutcqUargsq]qCaUchordqNUcallbacksqNUerrbacksqNUtasksetqNUidq
Utasks.estimate_geometryqUtimelimitqNNUetaqNUkwargsq}qu.
segment_imagetasks.segment_image9.221.05672:)<(
192.018.000.002.35908-052.017.119.221.05672: <application/x-python-serializebinary$ce0da18a-6534-42d0-9919-cd2e85c8d5e9$f4c7420c-b9c2-3525-bd5a-d5955f884f43
192.018.000.002.35908-052.017.119.221.05672: }q(UexpiresqNUutcqUargsq]qCaUchordqNUcallbacksqNUerrbacksqNUtasksetqNUidq
Utasks.segment_imageqUtimelimitqNNUetaqNUkwargsq}qu.skq
अतिरिक्त जानकारी:
celery_app = Celery('tasks')
celery_app.config_from_object('django.conf:settings')
celery_app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
celery_app.send_task('tasks.estimate_geometry', args=[instance.id], kwargs={})
सेटिंग्स:
import os
from kombu import Exchange, Queue
BROKER_URL = 'amqp://xxxx:[email protected]:5672//'
CELERY_RESULT_BACKEND = "cache"
CELERY_CACHE_BACKEND = 'memcached://xxxxxx:11211'
CELERY_DEFAULT_QUEUE = 'default'
CELERY_DEFAULT_EXCHANGE_TYPE = 'topic'
CELERY_DEFAULT_ROUTING_KEY = 'default'
CELERY_QUEUES = (
Queue('default', Exchange('default'), routing_key='default'),
Queue('estimate_geometry', Exchange('estimate_geometry'), routing_key='tasks.estimate_geometry'),
Queue('segment_image', Exchange('segment_image'), routing_key='tasks.segment_image'),
Queue('geometry_feature', Exchange('geometry_feature'), routing_key='tasks.geometry_feature'),
)
CELERY_ROUTES = {
'tasks.estimate_geometry': {
'queue': 'estimate_geometry',
'routing_key': 'tasks.estimate_geometry',
},
'tasks.segment_image': {
'queue': 'segment_image',
'routing_key': 'tasks.segment_image',
},
'tasks.geometry_feature': {
'queue': 'geometry_feature',
'routing_key': 'tasks.geometry_feature',
},
}
BROKER_HEARTBEAT = 10
आप कैसे जानते हैं कि यह ब्रोकर को कभी नहीं बनाता है? – scytale