সেলারি প্রকারের নিবন্ধভুক্ত টাস্কটি পেয়েছে (চালানোর উদাহরণ)


99

আমি সেলারি ডকুমেন্টেশন থেকে উদাহরণ চালানোর চেষ্টা করছি ।

আমি দৌড়াই: celeryd --loglevel=INFO

/usr/local/lib/python2.7/dist-packages/celery/loaders/default.py:64: NotConfigured: No 'celeryconfig' module found! Please make sure it exists and is available to Python.
  "is available to Python." % (configname, )))
[2012-03-19 04:26:34,899: WARNING/MainProcess]  

 -------------- celery@ubuntu v2.5.1
---- **** -----
--- * ***  * -- [Configuration]
-- * - **** ---   . broker:      amqp://guest@localhost:5672//
- ** ----------   . loader:      celery.loaders.default.Loader
- ** ----------   . logfile:     [stderr]@INFO
- ** ----------   . concurrency: 4
- ** ----------   . events:      OFF
- *** --- * ---   . beat:        OFF
-- ******* ----
--- ***** ----- [Queues]
 --------------   . celery:      exchange:celery (direct) binding:celery

Tasks.py:

# -*- coding: utf-8 -*-
from celery.task import task

@task
def add(x, y):
    return x + y

রান_টাস্ক.পি:

# -*- coding: utf-8 -*-
from tasks import add
result = add.delay(4, 4)
print (result)
print (result.ready())
print (result.get())

একই ফোল্ডারে সেলারিকনফিগ.পি:

CELERY_IMPORTS = ("tasks", )
CELERY_RESULT_BACKEND = "amqp"
BROKER_URL = "amqp://guest:guest@localhost:5672//"
CELERY_TASK_RESULT_EXPIRES = 300

আমি যখন "run_task.py" চালাই:

পাইথন কনসোলে

eb503f77-b5fc-44e2-ac0b-91ce6ddbf153
False

সেলারিড সার্ভারে ত্রুটি

[2012-03-19 04:34:14,913: ERROR/MainProcess] Received unregistered task of type 'tasks.add'.
The message has been ignored and discarded.

Did you remember to import the module containing this task?
Or maybe you are using relative imports?
Please see http://bit.ly/gLye1c for more information.

The full contents of the message body was:
{'retries': 0, 'task': 'tasks.add', 'utc': False, 'args': (4, 4), 'expires': None, 'eta': None, 'kwargs': {}, 'id': '841bc21f-8124-436b-92f1-e3b62cafdfe7'}

Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/celery/worker/consumer.py", line 444, in receive_message
    self.strategies[name](message, body, message.ack_log_error)
KeyError: 'tasks.add'

সমস্যা কি দয়া করে ব্যাখ্যা করুন।


12
হাই, আপনি কি দয়া করে ভাগ করে নিতে পারেন সমস্যাটি কী ছিল এবং আপনি কীভাবে সমাধান করেছেন? গৃহীত উত্তর এটি পরিষ্কার করে না যে অন্যরা কীভাবে এই সমস্যাটি সমাধান করতে পারে। ধন্যবাদ
জর্দান রিইটার

4
আমি জর্দানের সাথে আছি- এটি মোটেই কার্যকর ছিল না। ডাউনভোটড
জে টেলর

4
আইহোর উত্তরটি সঠিক:CELERY_IMPORTS = ("tasks", )
আল্প

উত্তর:


50

আপনি celery.registry.TaskRegistryক্লাসে নিবন্ধিত কর্মের বর্তমান তালিকা দেখতে পাবেন । আপনার সেলারি কনফিগ (বর্তমান ডিরেক্টরিতে) PYTHONPATHএতটা সেলারি খুঁজে না পেয়ে এটি ডিফল্টে ফিরে যেতে পারে। সেলারি শুরু করার সময় এটি স্পষ্টভাবে নির্দিষ্ট করুন।

celeryd --loglevel=INFO --settings=celeryconfig

আপনি সেট করতে পারেন --loglevel=DEBUGএবং আপনার সম্ভবত সমস্যাটি তাত্ক্ষণিকভাবে দেখা উচিত।


4
+1 এর জন্য --loglevel=DEBUG, আমার কাজটিতে একটি সিনট্যাক্স ত্রুটি ছিল।
জ্যাকব ভ্যালেন্টা

15
সেলারিড অপ্রচলিত। এখন এক চালানো উচিত celery workerজন্য যেমন Djangoভালোcelery --app=your_app.celery worker --loglevel=info
andilabs

আমার জন্য (সেলারি 3.1.23), celery.registry.tasksআমার বর্তমান সমস্ত কাজের একটি তালিকা দেখতে আমাকে ব্যবহার করতে হয়েছিল। আপনি সর্বদা চালিয়ে চেক করতে পারেন dir(celery.registry)
নিক ব্র্যাডি

জন্য --loglevel=DEBUGআমার পাশ থেকে পাশাপাশি
Shobi

65

আমি মনে করি আপনাকে কর্মী সার্ভারটি পুনরায় চালু করতে হবে। আমি একই সমস্যাটি পূরণ করেছি এবং এটি পুনরায় চালু করে সমাধান করব।


8
ধন্যবাদ! আশা করি আমি এটি এক ঘন্টা আগে পেয়েছি
নেক্সাস

4
এটি আমার জন্য এটি স্থির করে দিয়েছে। যদি আপনি সেলারিযুক্ত স্ক্রিপ্টগুলি ব্যবহার করেন তবে কর্মী শুরুতে আপনার টাস্ক মডিউলটি আমদানি করে। এমনকি যদি আপনি আরও বেশি টাস্ক ফাংশন তৈরি করেন বা বিদ্যমানগুলিকে পরিবর্তন করেন তবে কর্মী তার মেমরির অনুলিপিগুলি পড়ার সময় যেমন ছিল তেমন ব্যবহার করবে।
চিহ্নিত করুন

4
দ্রষ্টব্য: আপনি যাচাই করে নিতে পারেন যে আপনার কাজগুলি চালাচ্ছে বা নিবন্ধভুক্ত নয়celery inspect registered
নিক ব্র্যাডি

4
আপনি বিকল্পের সাথে সেলারি শুরু করতে পারেন --autoreloadযা প্রতিবারের সময় কোড পরিবর্তন করা হলে সেলারি পুনঃসূচনা করবে।
সের্গেই লিয়াপস্টিন

দুর্ভাগ্যজনকভাবে হ্রাস করা হয়েছে। এই লিঙ্কটি থেকে কেউ একটি সমাধান ব্যবহার করতে পারেন: avilpage.com/2017/05/…
টমাসজ সজকুদলারেক

51

আমারও একই সমস্যা ছিল: এর কারণ "Received unregistered task of type.."হ'ল সেলারিড পরিষেবা পরিষেবা শুরুর কাজগুলিকে সন্ধান করতে এবং নিবন্ধন করতে পারে নি (আপনি শুরু করার সাথে সাথে বিটিডব্লিউটি তাদের তালিকা দৃশ্যমান হয় ./manage.py celeryd --loglevel=info)।

এই কাজগুলি CELERY_IMPORTS = ("tasks", )সেটিংস ফাইলে ঘোষণা করা উচিত ।
আপনার যদি একটি বিশেষ celery_settings.pyফাইল থাকে তবে এটি --settings=celery_settings.pyডিগিভিপায়ার লিখেছেন বলে সেলারিড পরিষেবা শুরু করতে হবে ।


4
ধন্যবাদ, আমি আসলে সমস্যাটি পেয়েছিলাম কারণ আমি পরিচালনা.পি কমান্ডের পরিবর্তে! / পাথ / টু / সেলারি / সেলারি ব্যবহার করে সেলারি শুরু করেছি!
এন্টোইন

29

আপনি ব্যবহার করুন CELERY_IMPORTSবা করুন autodiscover_tasks, গুরুত্বপূর্ণ বিষয়টি হল কাজগুলি সন্ধান করতে সক্ষম এবং সেলেরিতে নিবন্ধভুক্ত কার্যগুলির নামটির সাথে শ্রমিকরা যে নামগুলি আনতে চেষ্টা করছে তার সাথে মিল রাখতে হবে।

আপনি যখন সেলারিটি চালু করবেন, তখন বলুন celery worker -A project --loglevel=DEBUG, আপনার কার্যগুলির নামটি দেখা উচিত। উদাহরণস্বরূপ, আমার যদি আমার কোনও debug_taskকাজ থাকে celery.py

[tasks]
. project.celery.debug_task
. celery.backend_cleanup
. celery.chain
. celery.chord
. celery.chord_unlock
. celery.chunks
. celery.group
. celery.map
. celery.starmap

আপনি তালিকায় আপনার কর্ম দেখতে পারে না, তাহলে সঠিকভাবে আপনার সেলারি কনফিগারেশন আমদানি কর্ম পরীক্ষা পারেন মধ্যে দয়া --setting, --config, celeryconfigবা config_from_object

যদি আপনি সেলারি বিট ব্যবহার করছেন তবে নিশ্চিত হয়ে নিন যে টাস্কের নামটি task, আপনি CELERYBEAT_SCHEDULEসেলারি টাস্ক তালিকার নামের সাথে মেলে।


এটি খুব সহায়ক ছিল।
টাস্কটির

* গুরুত্বপূর্ণ বিষয়টি হল কাজগুলি সন্ধান করতে সক্ষম হওয়া এবং সেলারিতে নিবন্ধিত কার্যগুলির নামটির সাথে শ্রমিকরা যে নামগুলি আনতে চেষ্টা করা হয়েছে তার সাথে মিল পাওয়া উচিত। * ভাল যুক্তি!!!
লাইট.জি

এটা সঠিক উত্তর. BEAT_SCHEDULER এ থাকা আপনার টাস্কের নামটি স্ব-আবিষ্কারকাজের তালিকার তালিকায় যা কিছু প্রদর্শিত হবে তার সাথে মেলে। সুতরাং আপনি যদি @task(name='check_periodically')এটি ব্যবহার করেন তবে এটি আপনি কীভাবে বেট CELERY_BEAT_SCHEDULE = { 'check_periodically': { 'task': 'check_periodically', 'schedule': timedelta(seconds=1) }
শিডিয়োলে রেখেছেন তা মিলবে

17

আমারও একই সমস্যা ছিল; আমি আরো বললাম

CELERY_IMPORTS=("mytasks")

আমার celeryconfig.pyফাইলটি এটি সমাধান করার জন্য।


7
মনে রাখবেন যে এটি একটি তালিকা বা একটি টিপল হওয়া উচিত:CELERY_IMPORTS = ['my_module']
জিজ্ঞাসা করুন

এটি আমার জন্য করেছে
রিজিওরো

13
app = Celery('proj',
             broker='amqp://',
             backend='amqp://',
             include=['proj.tasks'])

দয়া করে অন্তর্ভুক্ত করুন = ['proj.tasks'] আপনার উপরের দিকে যেতে হবে, তারপরে এটি সম্পাদন করুন

celery -A app.celery_module.celeryapp worker --loglevel=info

না

celery -A celeryapp worker --loglevel=info

আপনার সেলারিconfig.py ইনপুট আমদানিগুলিতে = ("path.ptah.tasks",)

দয়া করে অন্য মডিউলে প্রার্থনা করুন !!!!!!!!


4
includeআপনি আপেক্ষিক আমদানির ব্যবহার করছেন PARAM দরকার সেগুলি যুক্ত করুন যাবে। আমি আমার সমস্যাটি যুক্ত করে সমাধান করেছি
CK.Nguyen

4
এই স্ট্রিংয়ের জন্য আপনার উত্তরটি ভোট দিয়েছেন please in other module invoke task!!!!!!!!। এটা সাহায্য করেছিল.
ভোলআর্ট

8

- সেটিং ব্যবহার করা আমার পক্ষে কার্যকর হয়নি। এগুলি সমস্ত কাজ করতে আমাকে নিম্নলিখিত ব্যবহার করতে হয়েছিল:

celery --config=celeryconfig --loglevel=INFO

এখানে সেলারি কনফিগ ফাইল রয়েছে যা CELERY_IMPORTS যুক্ত করেছে:

# Celery configuration file
BROKER_URL = 'amqp://'
CELERY_RESULT_BACKEND = 'amqp://'

CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TIMEZONE = 'America/Los_Angeles'
CELERY_ENABLE_UTC = True

CELERY_IMPORTS = ("tasks",)

আমার সেটআপটি আরও কিছুটা জটিল ছিল কারণ আমি সুপারভাইজারকে ডিমন হিসাবে সেলারি চালু করতে ব্যবহার করি।


8

আমার পক্ষে এই ত্রুটিটি জাঙ্গোর INSTALLED_APPS সেটিংয়ের অধীনে কার্যগুলি অন্তর্ভুক্ত থাকা অ্যাপটি অন্তর্ভুক্ত করে তা নিশ্চিত করে সমাধান করা হয়েছিল।


এছাড়াও, <app> /tasks.py
np8

3

আমি আমার জাঙ্গো অ্যাপ্লিকেশনটিতে কিছু সংকেত হ্যান্ডলিং যুক্ত করার পরে আমি রহস্যজনকভাবে এই সমস্যাটি তৈরি করেছি। এটি করার সাথে সাথে আমি অ্যাপটিকে একটি অ্যাপকনফিগ ব্যবহার করতে রূপান্তরিত করেছি, যার অর্থ কেবল 'booking'ইন' হিসাবে পড়ার পরিবর্তে INSTALLED_APPSএটি পড়ে 'booking.app.BookingConfig'

সেলারি এর অর্থ কী তা বুঝতে পারে না, তাই আমি INSTALLED_APPS_WITH_APPCONFIGS = ('booking',)আমার জাঙ্গো সেটিংসে যুক্ত করেছিলাম এবং আমার celery.pyথেকে সংশোধন করেছি

app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)

প্রতি

app.autodiscover_tasks(
    lambda: settings.INSTALLED_APPS + settings.INSTALLED_APPS_WITH_APPCONFIGS
)

3

আমার জন্য যা কাজ করেছিল তা হ'ল সেলারি টাস্ক ডেকরেটারে স্পষ্ট নাম যুক্ত করা। আমি থেকে আমার কাজে ঘোষণা পরিবর্তিত @app.tasksকরতে@app.tasks(name='module.submodule.task')

এখানে একটি উদাহরণ

# test_task.py
@celery.task
def test_task():
    print("Celery Task  !!!!")

# test_task.py
@celery.task(name='tasks.test.test_task')
def test_task():
    print("Celery Task  !!!!")

2

সেলারি বিট থেকে কাজগুলি চালানোর ক্ষেত্রে আমার একই সমস্যা ছিল। সেলারি আপেক্ষিক আমদানি পছন্দ করে না তাই আমার celeryconfig.py, আমাকে স্পষ্টভাবে পুরো প্যাকেজের নামটি সেট করতে হয়েছিল:

app.conf.beat_schedule = {
   'add-every-30-seconds': {
        'task': 'full.path.to.add',
        'schedule': 30.0,
        'args': (16, 16)
    },
}

আমি আশা করি সেলারি ডক্সে পুরো প্যাকেজের নাম সহ আরও উদাহরণ রয়েছে। এই উত্তরে full.path.to.add দেখার পরে, আমি জানতে পেরেছিলাম যে আমদানিগুলির আমার দরকার নেই। আমি জানতাম সমাধানটি সহজ, এবং কেবলমাত্র app.conf.beat_schedule এর আরও ভাল উদাহরণ থাকা দরকার।
জিরোকগ

2

এটি আশ্চর্যজনকভাবে প্যাকেজ হারিয়ে যাওয়ার কারণেও হতে পারে। সমস্ত প্রয়োজনীয় প্যাকেজ ইনস্টল করতে পিপ চালান: pip install -r requirements.txt

autodiscover_tasks অনুপস্থিত প্যাকেজগুলি ব্যবহার করে এমন কাজগুলি বাছাই করা হয়নি।


4
আমারও একি দশা. আমি মনে করি আমদানির সময় যা ঘটে থাকে তা ব্যতিক্রম স্বয়ংক্রিয় আবিষ্কারের অংশগুলি সম্পূর্ণ না করে।
টিম টিসডাল

আহ্ হ্যাঁ, বোঝা যায়। ধন্যবাদ
কাকোমা

1

জ্যাঙ্গোর সাথে আমার কোনও সমস্যা হয়নি । আমি যখন ফ্লাস্ক ব্যবহার করছিলাম তখন এটির মুখোমুখি হয়েছিল । সমাধানটি কনফিগার করার বিকল্পটি নির্ধারণ করছিল।

celery worker -A app.celery --loglevel=DEBUG --config=settings

জ্যাঙ্গোর সাথে থাকার সময় আমার সবেমাত্র ছিল:

python manage.py celery worker -c 2 --loglevel=info


1

আমিও এই সমস্যার মুখোমুখি হয়েছি, তবে এটি একেবারে এক নয়, তাই কেবল এফওয়াইআই। সাম্প্রতিক আপগ্রেডগুলির কারণে এই ডেকোরেটর সিনট্যাক্সের কারণে এই ত্রুটি বার্তা তৈরি হয়।

ERROR/MainProcess] Received unregistered task of type 'my_server_check'.

@task('my_server_check')

ন্যায়বিচার পরিবর্তন করতে হবে

@task()

কোন ক্লু কেন।


1

আপনি যদি এই জাতীয় ইনস্টল থাকা অ্যাপ্লিকেশনগুলিতে অ্যাপস কনফিগারেশন ব্যবহার করে থাকেন:

LOCAL_APPS = [
'apps.myapp.apps.MyAppConfig']

তারপরে আপনার কনফিগার অ্যাপ্লিকেশনটিতে, প্রস্তুত পদ্ধতিতে টাস্কটি এই জাতীয়ভাবে আমদানি করুন:

from django.apps import AppConfig

class MyAppConfig(AppConfig):
    name = 'apps.myapp'

    def ready(self):
        try:
            import apps.myapp.signals  # noqa F401
            import apps.myapp.tasks
        except ImportError:
            pass

1

পাইথন শেলটিতে সিলারি টাস্কটি আমদানির চেষ্টা করুন - কোনও খারাপ আমদানির বিবৃতি দেওয়ার কারণে সিলারি নিঃশব্দে আপনার কাজগুলি নিবন্ধ করতে ব্যর্থ হচ্ছে।

ImportErrorআমার টাস্ক.পি ফাইলটিতে আমার একটি ব্যতিক্রম ছিল যা সেলারিটির কারণে মডিউলটিতে কাজগুলি নিবন্ধভুক্ত করতে না পারে। অন্যান্য সমস্ত মডিউল কাজ সঠিকভাবে নিবন্ধিত হয়েছে।

আমি পাইথন শেলের মধ্যে সিলারি টাস্কটি আমদানির চেষ্টা না করা অবধি এই ত্রুটিটি স্পষ্ট ছিল না। আমি খারাপ আমদানির বিবরণী ঠিক করেছি এবং তারপরে কার্যগুলি সফলভাবে নিবন্ধিত হয়েছিল।


এটি আমার ক্ষেত্রেও ছিল। অনুপস্থিত আমদানি ছিল। সমস্যা সেলারি কেবল নিঃশব্দে ব্যর্থ হয়।
রেডগ্রেন গ্রম্বহোল্ড

0

আপনি যদি এই ধরণের ত্রুটির মধ্যে চলে যাচ্ছেন, তবে বেশ কয়েকটি সম্ভাব্য কারণ রয়েছে তবে আমি যে সমাধানটি পেয়েছি তা হল আমার / / ডিফল্ট / সেল্রিডে সেলারিড কনফিগারেশন ফাইলটি নির্দিষ্ট নির্দিষ্ট জাঙ্গো প্রকল্পের জন্য নয়, মানক ব্যবহারের জন্য কনফিগার করা হয়েছিল। যত তাড়াতাড়ি আমি সেলারি ডক্সে নির্দিষ্ট ফর্ম্যাটে এটিকে রূপান্তর করেছি , সমস্ত কিছু ঠিক আছে।


0

আমার জন্য এই লাইনটি / etc / ডিফল্ট / সেলারিডে যুক্ত করার সমাধান

CELERYD_OPTS="-A tasks"

কারণ আমি যখন এই আদেশগুলি পরিচালনা করি:

celery worker --loglevel=INFO
celery worker -A tasks --loglevel=INFO

কেবলমাত্র পরবর্তী কমান্ডটিই কার্যের নাম প্রদর্শন করছিল।

আমি CELERY_APP লাইন / ইত্যাদি / ডিফল্ট / সেলারিযুক্ত যুক্ত করার চেষ্টা করেছি কিন্তু এটিও কার্যকর হয়নি।

CELERY_APP="tasks"

0

আমার জাঙ্গো-সেলারিতে পিরিওডিকটাস্ক ক্লাসে সমস্যা ছিল, যখন প্রতিটি মৃত্যুদণ্ড কার্যকর হওয়া সেলারি কর্মী শুরু করার সময় তাদের নামগুলি জরিমানা প্রকাশ করেছিল:

কী-ত্রুটি: u'my_app.tasks.run '

আমার কাজটি 'ক্লিনআপ' নামে একটি শ্রেণি ছিল, কেবল 'রান' নামক একটি পদ্ধতি নয়।

আমি যখন 'djcelery_periodictask' টেবিলটি পরীক্ষা করেছি তখন আমি পুরানো এন্ট্রি দেখেছি এবং সেগুলি মুছে ফেলার ফলে সমস্যার সমাধান হয়েছে।


0

এই ত্রুটি দিয়ে কেবল আমার মামলার জন্য আমার দুটি সেন্ট যুক্ত করতে ...

আমার পথটি এর /vagrant/devops/testসাথে app.pyএবং __init__.pyএতে রয়েছে।

আমি চালানোর সময় আমি cd /vagrant/devops/ && celery worker -A test.app.celery --loglevel=infoএই ত্রুটিটি পাচ্ছি।

তবে আমি যখন এটি চালাচ্ছি cd /vagrant/devops/test && celery worker -A app.celery --loglevel=infoসবকিছু ঠিক আছে।


0

আমি দেখতে পেয়েছি যে আমাদের একজন প্রোগ্রামার আমদানির মধ্যে একটিতে নিম্নলিখিত লাইনটি যুক্ত করেছেন:

os.chdir(<path_to_a_local_folder>)

এর ফলে সিলারি কর্মী তার কাজের ডিরেক্টরিটি প্রকল্পের ডিফল্ট ওয়ার্কিং ডিরেক্টরি থেকে (যেখানে এটি কাজগুলি সন্ধান করতে পারে) থেকে আলাদা ডিরেক্টরিতে (যেখানে এটি কার্যগুলি সন্ধান করতে পারে না) পরিবর্তিত করে।

কোডের এই লাইনটি সরিয়ে দেওয়ার পরে, সমস্ত কাজ খুঁজে পাওয়া গেছে এবং নিবন্ধিত হয়েছে।


0

সেলারি তুলনামূলকভাবে আমদানিগুলিকে সমর্থন করে না তাই আমার সেলারি কোডফাই.পি.তে আপনার নিখুঁত আমদানি প্রয়োজন।

CELERYBEAT_SCHEDULE = {
        'add_num': {
            'task': 'app.tasks.add_num.add_nums',
            'schedule': timedelta(seconds=10),
            'args': (1, 2)
        }
}

0

সত্যই দরকারী তালিকার অতিরিক্ত আইটেম।

কার্যগুলিতে ত্রুটির ক্ষেত্রে সেলারিটিকে ক্ষমা করতে পেলাম (বা কমপক্ষে আমি উপযুক্ত লগ এন্ট্রি সনাক্ত করতে সক্ষম হইনি) এবং এটি তাদের নিবন্ধভুক্ত করে না। সিলারিটি পরিষেবা হিসাবে চালানো নিয়ে আমার বেশ কয়েকটি সমস্যা ছিল, যা মূলত অনুমতি সম্পর্কিত ছিল।

কোনও লগ ফাইলে লেখার অনুমতি সম্পর্কিত সর্বশেষ সম্পর্কিত। কমান্ড লাইনে সেলারি বাড়াতে বা চালাতে আমার কোনও সমস্যা ছিল না, তবে পরিষেবাটি নিবন্ধভুক্ত হিসাবে টাস্কটি জানিয়েছে।

পরিষেবাটিতে এটি লিখতে সক্ষম করার জন্য আমার লগ ফোল্ডারের অনুমতিগুলি পরিবর্তন করতে হবে।


0

আমার 2 সেন্ট

আমি আলপাইন ব্যবহার করে এটি একটি ডকার ইমেজে পেয়ে যাচ্ছিলাম। সিজ্লগে /dev/logলগিংয়ের জন্য জ্যাঙ্গো সেটিংস উল্লেখ করা হয়েছে। জ্যাঙ্গো অ্যাপ এবং সেলারি কর্মী উভয়ই একই চিত্রের ভিত্তিতে ছিল। জ্যাঙ্গো অ্যাপ্লিকেশন চিত্রটির এন্ট্রিপয়েন্টটি syslogdশুরু হওয়ার সাথে সাথে চালু হয়েছিল, তবে সেলারি কর্মীর পক্ষে এটি ছিল না। এটি ./manage.py shellব্যর্থ হওয়ার মতো বিষয়গুলির কারণ হচ্ছিল কারণ সেখানে কোনও কিছুই থাকবে না /dev/log। সেলারি শ্রমিক ব্যর্থ হচ্ছিল না। পরিবর্তে, এটি চুপচাপ কেবল অ্যাপ্লিকেশন আরম্ভের বাকী অংশটিকে অগ্রাহ্য করেছিল, এতে shared_taskজ্যাঙ্গো প্রকল্পের অ্যাপ্লিকেশনগুলি থেকে লোডিং এন্ট্রি অন্তর্ভুক্ত ছিল


0

আমার ক্ষেত্রে ত্রুটিটি হ'ল কারণ একটি ধারক একটি ফোল্ডারে এমন ফাইল তৈরি করেছিলেন যা হোকার ফাইল-সিস্টেমে ডকার-রচনা দিয়ে মাউন্ট করা হয়েছিল।

আমাকে কেবল হোস্ট সিস্টেমে ধারক দ্বারা তৈরি ফাইলগুলি সরিয়ে ফেলতে হয়েছিল এবং আমি আবার আমার প্রকল্প চালু করতে সক্ষম হয়েছি।

sudo আরএম -আরএফ ফোল্ডারনাম

(ফাইলগুলি মূল ব্যবহারকারীর মালিকানাধীন বলে আমাকে সুডো ব্যবহার করতে হয়েছিল)

ডকার সংস্করণ: 18.03.1


0

আপনি যদি ব্যবহার করেন তবে autodiscover_tasksনিশ্চিত হয়ে নিন যে আপনার functionsনিবন্ধিত হতে হবে tasks.py, অন্য কোনও ফাইল নয়। অথবা সেলারি functionsআপনি নিবন্ধন করতে চান তা খুঁজে পেতে পারেন না ।

ব্যবহারটি কাজটিও app.register_taskকরবে তবে কিছুটা নির্বোধ বলে মনে হচ্ছে।

দয়া করে এই অফিশিয়াল স্পেসিফিকেশন দেখুন autodiscover_tasks

def autodiscover_tasks(self, packages=None, related_name='tasks', force=False):
    """Auto-discover task modules.

    Searches a list of packages for a "tasks.py" module (or use
    related_name argument).

    If the name is empty, this will be delegated to fix-ups (e.g., Django).

    For example if you have a directory layout like this:

    .. code-block:: text

        foo/__init__.py
           tasks.py
           models.py

        bar/__init__.py
            tasks.py
            models.py

        baz/__init__.py
            models.py

    Then calling ``app.autodiscover_tasks(['foo', bar', 'baz'])`` will
    result in the modules ``foo.tasks`` and ``bar.tasks`` being imported.

    Arguments:
        packages (List[str]): List of packages to search.
            This argument may also be a callable, in which case the
            value returned is used (for lazy evaluation).
        related_name (str): The name of the module to find.  Defaults
            to "tasks": meaning "look for 'module.tasks' for every
            module in ``packages``."
        force (bool): By default this call is lazy so that the actual
            auto-discovery won't happen until an application imports
            the default modules.  Forcing will cause the auto-discovery
            to happen immediately.
    """

0

ফাইল কার্যগুলিতে সঠিক পাথ লিখুন

app.conf.beat_schedule = {
'send-task': {
    'task': 'appdir.tasks.testapp',
    'schedule': crontab(minute='*/5'),  
},

}


0

"সেলারি -A কনফার্ম কর্মী -l তথ্য" কমান্ডের সাহায্যে সেলারি চালানোর সময় সমস্ত কাজ লগের মতো তালিকাবদ্ধ হয়ে গেছে যেমন আমার ছিল। conf.celery.debug_task আমি ত্রুটি পাচ্ছিলাম কারণ আমি এই সঠিক টাস্ক পাথটি দিচ্ছি না। যথাযথভাবে সঠিক টাস্ক আইডি অনুলিপি করে এবং এটি আটকে দিন ck


0
app = Celery(__name__, broker=app.config['CELERY_BROKER'], 
backend=app.config['CELERY_BACKEND'], include=['util.xxxx', 'util.yyyy'])

0

আপনার সমস্যার উত্তরটি আপনার প্রশ্নে আপনি যে আউটপুট সরবরাহ করেছেন তার প্রথম লাইনে রয়েছে /usr/local/lib/python2.7/dist-packages/celery/loaders/default.py:64: NotConfigured: No 'celeryconfig' module found! Please make sure it exists and is available to Python. "is available to Python." % (configname, )))। সঠিক কনফিগারেশন ছাড়া সেলারি কিছুই করতে সক্ষম নয়।

কেন এটি সেলারি কনফিগ খুঁজে পাচ্ছে না কারণ সম্ভবত এটি আপনার পাইথনপথে নেই।

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