2016-02-12 7 views
10

मेरे कुछ रिमोट 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 
+0

आप कैसे जानते हैं कि यह ब्रोकर को कभी नहीं बनाता है? – scytale

उत्तर

2

ऐसा लगता है कि समस्या को दूर करने में गलत रास्ता अपनाया।

segment_imagetasks.segment_image0.171.05672:)<(" 
दोनों लॉग में

: मैं लाइन में देखते हैं।

यदि यह आपके कोड से प्रिंट आउटपुट है तो यह काम कर रहा है, लेकिन गलत तरीके से। तो परिवहन परिवहन परत में परेशानी नहीं है।

पहले मामले में मैं देख सकता हूँ लाइनों:

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 

तो, कभी कभी यह अच्छी तरह से काम कर रहा है।

आपको अपना कोड (tasks.estimate_geometry) मैन्युअल रूप से उदाहरणों के साथ चलाना चाहिए यदि आपकी परेशानी है।

यदि यह सर्वर लॉग है: कुछ सी-पुस्तकालय एक सर्वर पर संकलित नहीं हो सकते हैं और आपका कोड स्थानीय रूप से काम करता है लेकिन सर्वर पर काम नहीं करता है। तो, छवि प्रारूप की जांच करें।

संबंधित मुद्दे