ขึ้นฉ่ายรับงานที่ไม่ได้ลงทะเบียนประเภท (เรียกใช้ตัวอย่าง)


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

task.py:

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

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

run_task.py:

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

ในโฟลเดอร์เดียวกัน celeryconfig.py:

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

เมื่อฉันเรียกใช้ "run_task.py":

บนคอนโซล python

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
สวัสดีคุณช่วยแชร์ได้ไหมว่าปัญหาคืออะไรและคุณแก้ไขอย่างไร คำตอบที่ได้รับการยอมรับไม่ได้ระบุชัดเจนว่าผู้อื่นสามารถแก้ปัญหานี้ได้อย่างไร ขอบคุณ.
Jordan Reiter

3
ฉันอยู่กับจอร์แดนสิ่งนี้ไม่มีประโยชน์เลย โหวตลดลง
Jay Taylor

2
คำตอบของ aiho คือคำตอบที่ถูกต้อง:CELERY_IMPORTS = ("tasks", )
Alp

คำตอบ:


50

คุณสามารถดูรายการงานที่ลงทะเบียนปัจจุบันในcelery.registry.TaskRegistryชั้นเรียน อาจเป็นไปได้ว่าขึ้นฉ่ายของคุณ (ในไดเร็กทอรีปัจจุบัน) ไม่ได้อยู่ในPYTHONPATHคื่นฉ่ายจึงไม่สามารถค้นหาได้และกลับสู่ค่าเริ่มต้น เพียงระบุให้ชัดเจนเมื่อเริ่มขึ้นฉ่าย

celeryd --loglevel=INFO --settings=celeryconfig

คุณยังสามารถตั้งค่า--loglevel=DEBUGและคุณน่าจะเห็นปัญหาทันที


5
+1 สำหรับ--loglevel=DEBUGมีข้อผิดพลาดทางไวยากรณ์ในงานของฉัน
Jacob Valenta

15
คื่นฉ่ายล้าสมัย ตอนนี้ควรรันcelery workerเช่นDjangoนี้celery --app=your_app.celery worker --loglevel=info
andilabs

สำหรับฉัน (ขึ้นฉ่าย 3.1.23) ฉันต้องใช้celery.registry.tasksเพื่อดูรายการงานปัจจุบันทั้งหมดของฉัน dir(celery.registry)คุณสามารถตรวจสอบโดยการเรียกใช้
Nick Brady

สำหรับ--loglevel=DEBUGจากด้านข้างของฉันเช่นกัน
โชบี

65

ฉันคิดว่าคุณต้องรีสตาร์ทเซิร์ฟเวอร์ผู้ปฏิบัติงาน ฉันพบปัญหาเดียวกันและแก้ไขได้โดยการรีสตาร์ท


8
ขอบคุณ! หวังว่าฉันจะพบสิ่งนี้เมื่อหนึ่งชั่วโมงที่แล้ว
Nexus

2
สิ่งนี้แก้ไขให้ฉัน หากคุณใช้สคริปต์ขึ้นฉ่ายผู้ปฏิบัติงานจะนำเข้าโมดูลงานของคุณเมื่อเริ่มต้น แม้ว่าคุณจะสร้างฟังก์ชันงานเพิ่มขึ้นหรือแก้ไขฟังก์ชันที่มีอยู่ แต่ผู้ปฏิบัติงานจะใช้สำเนาในหน่วยความจำเหมือนเดิมเมื่ออ่าน
ทำเครื่องหมาย

2
หมายเหตุ: คุณสามารถตรวจสอบได้ว่างานของคุณลงทะเบียนหรือไม่ได้โดยเรียกใช้celery inspect registered
Nick Brady

1
นอกจากนี้คุณยังสามารถเริ่มขึ้นฉ่ายด้วยตัวเลือก--autoreloadซึ่งจะเริ่มขึ้นฉ่ายทุกครั้งที่มีการเปลี่ยนรหัส
Sergey Lyapustin

น่าเสียดายที่เลิกใช้งานแล้ว สามารถใช้วิธีแก้ปัญหาได้จากลิงค์นี้: avilpage.com/2017/05/…
Tomasz Szkudlarek

51

ฉันมีปัญหาเดียวกัน: สาเหตุของ"Received unregistered task of type.."การบริการคื่นฉ่ายไม่พบและลงทะเบียนงานเมื่อเริ่มให้บริการ (btw รายการของพวกเขาจะปรากฏขึ้นเมื่อคุณเริ่ม ./manage.py celeryd --loglevel=info)

ควรประกาศงานเหล่านี้CELERY_IMPORTS = ("tasks", )ในไฟล์การตั้งค่า
หากคุณมีcelery_settings.pyไฟล์พิเศษจะต้องมีการประกาศบนบริการคื่นฉ่ายเริ่มต้นตาม--settings=celery_settings.pyที่ digivampire เขียน


1
ขอบคุณจริงๆฉันมีปัญหาเพราะฉันเริ่มขึ้นฉ่ายโดยใช้ ~ / path / to / celery / celeryd แทนการใช้คำสั่ง Manage.py!
Antoine

29

ไม่ว่าคุณจะใช้CELERY_IMPORTSหรือautodiscover_tasksจุดสำคัญคืองานสามารถพบได้และชื่อของงานที่ลงทะเบียนใน Celery ควรตรงกับชื่อที่คนงานพยายามดึงมา

เมื่อคุณเปิดขึ้นฉ่าย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, หรือceleryconfigconfig_from_object

หากคุณใช้คื่นช่ายตีให้แน่ใจว่าชื่องานที่taskคุณใช้CELERYBEAT_SCHEDULEตรงกับชื่อในรายการงานคื่นช่าย


สิ่งนี้มีประโยชน์มาก ชื่อของงานต้องตรงกับคีย์ "งาน" ใน CELERYBEAT_SCHEDULE ของคุณ
ss_millionaire

* ประเด็นสำคัญคือสามารถหางานได้และชื่อของงานที่ลงทะเบียนในคื่นฉ่ายควรตรงกับชื่อที่คนงานพยายามดึงมา * จุดดี!!!
Light.G

นี่คือคำตอบที่ถูกต้อง ชื่องานของคุณใน BEAT_SCHEDULER ควรตรงกับสิ่งที่ปรากฏในรายการงานที่ค้นพบอัตโนมัติ ดังนั้นถ้าคุณใช้@task(name='check_periodically')มันควรจะตรงกับที่คุณวางไว้ในตารางจังหวะ IE:CELERY_BEAT_SCHEDULE = { 'check_periodically': { 'task': 'check_periodically', 'schedule': timedelta(seconds=1) }
Mormoran

17

ฉันก็มีปัญหาเดียวกัน ฉันเพิ่ม

CELERY_IMPORTS=("mytasks")

ในceleryconfig.pyไฟล์ของฉันเพื่อแก้ปัญหา


7
โปรดทราบว่านี่ควรเป็นรายการหรือทูเพิล:CELERY_IMPORTS = ['my_module']
askol

สิ่งนี้ทำเพื่อฉัน
Riziero

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

โปรดใส่ = ['proj.tasks'] คุณต้องไปที่ dir ด้านบนจากนั้นดำเนินการนี้

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

ไม่

celery -A celeryapp worker --loglevel=info

ในการนำเข้าข้อมูล celeryconfig.py ของคุณ = ("path.ptah.tasks",)

โปรดในโมดูลอื่นเรียกใช้งาน !!!!!!!!


1
includeจำเป็นพระรามที่จะเพิ่มถ้าคุณกำลังใช้การนำเข้าญาติ ฉันได้แก้ไขปัญหาของฉันแล้วโดยเพิ่ม
CK.Nguyen

1
โหวตคำตอบของคุณสำหรับสตริงplease in other module invoke task!!!!!!!!นี้ มันช่วยได้
VolArt

8

การใช้ - การตั้งค่าไม่ได้ผลสำหรับฉัน ฉันต้องใช้สิ่งต่อไปนี้เพื่อให้ทุกอย่างทำงานได้:

celery --config=celeryconfig --loglevel=INFO

นี่คือไฟล์ celeryconfig ที่เพิ่ม 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 ของ django


นอกจากนี้ยังสามารถเข้าถึงงานได้จาก <app> /tasks.py
np8

3

ฉันมีปัญหานี้เกิดขึ้นอย่างลึกลับเมื่อฉันเพิ่มการจัดการสัญญาณบางอย่างในแอป django ของฉัน ในการทำเช่นผมแปลง app ที่จะใช้ AppConfig หมายความว่าแทนที่จะอ่านเป็น'booking'ในมันอ่านINSTALLED_APPS'booking.app.BookingConfig'

คื่นฉ่ายไม่เข้าใจว่านั่นหมายถึงอะไรฉันจึงเพิ่มINSTALLED_APPS_WITH_APPCONFIGS = ('booking',)ไปยังการตั้งค่า django ของฉันและแก้ไข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

ฉันมีปัญหาเดียวกันกับการเรียกใช้งานจาก Celery Beat คื่นฉ่ายไม่ชอบการนำเข้าแบบสัมพัทธ์ดังนั้นในของ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
zerocog

2

สิ่งนี้แปลกอาจเป็นเพราะแพ็คเกจที่หายไป เรียกใช้ pip เพื่อติดตั้งแพ็คเกจที่จำเป็นทั้งหมด: pip install -r requirements.txt

autodiscover_tasks ไม่ได้รับงานที่ใช้แพ็คเกจที่ขาดหายไป


1
ฉันมีปัญหาที่คล้ายกัน ฉันคิดว่าสิ่งที่เกิดขึ้นเป็นข้อยกเว้นระหว่างการนำเข้าทำให้บางส่วนของการค้นหาอัตโนมัติไม่เสร็จสมบูรณ์
Tim Tisdall

ใช่แล้วมันสมเหตุสมผลแล้ว ขอบคุณ
kakoma

1

ผมไม่ได้มีปัญหาใด ๆ กับDjango แต่พบนี้เมื่อฉันถูกใช้ขวด วิธีแก้ปัญหาคือการตั้งค่าตัวเลือกการกำหนดค่า

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

ในขณะที่อยู่กับ Django ฉันเพิ่งมี:

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


1

ฉันพบปัญหานี้เช่นกัน แต่ก็ไม่เหมือนกันดังนั้นแค่ FYI การอัปเกรดล่าสุดทำให้เกิดข้อความแสดงข้อผิดพลาดเนื่องจากไวยากรณ์ของมัณฑนากรนี้

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

@task('my_server_check')

จะต้องเปลี่ยนเป็นเพียง

@task()

ไม่มีเงื่อนงำว่าทำไม


1

หากคุณกำลังใช้การกำหนดค่าแอพในแอพที่ติดตั้งไว้ดังนี้:

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

จากนั้นในแอป config ของคุณให้นำเข้างานด้วยวิธีการพร้อมดังนี้:

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

ลองนำเข้างานขึ้นฉ่ายใน Python Shell - Celery อาจล้มเหลวในการลงทะเบียนงานของคุณเนื่องจากข้อความนำเข้าไม่ถูกต้อง

ฉันมีImportErrorข้อยกเว้นในไฟล์ task.py ของฉันที่ทำให้ Celery ไม่สามารถลงทะเบียนงานในโมดูลได้ งานโมดูลอื่น ๆ ทั้งหมดได้รับการลงทะเบียนอย่างถูกต้อง

ข้อผิดพลาดนี้ไม่ปรากฏชัดจนกว่าฉันจะลองนำเข้างาน Celery ภายใน Python Shell ฉันแก้ไขคำสั่งการนำเข้าที่ไม่ถูกต้องจากนั้นงานได้รับการลงทะเบียนเรียบร้อยแล้ว


นี่ก็เป็นกรณีของฉันเช่นกัน มีการนำเข้าที่ขาดหายไป ปัญหาคือคื่นช่ายล้มเหลวอย่างเงียบ ๆ
Redgren Grumbholdt

0

หากคุณพบข้อผิดพลาดประเภทนี้มีสาเหตุหลายประการที่เป็นไปได้ แต่วิธีแก้ปัญหาที่ฉันพบคือไฟล์ปรับแต่ง celeryd ของฉันใน / etc / default / celeryd ถูกกำหนดค่าสำหรับการใช้งานมาตรฐานไม่ใช่สำหรับโครงการ django เฉพาะของฉัน ทันทีที่ฉันแปลงเป็นรูปแบบที่ระบุในเอกสารขึ้นฉ่ายทุกอย่างก็เรียบร้อยดี


0

วิธีแก้ปัญหาสำหรับฉันในการเพิ่มบรรทัดนี้ใน / etc / default / celeryd

CELERYD_OPTS="-A tasks"

เพราะเมื่อฉันรันคำสั่งเหล่านี้:

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

เฉพาะคำสั่งหลังเท่านั้นที่แสดงชื่องานเลย

ฉันได้ลองเพิ่ม CELERY_APP line / etc / default / celeryd แล้ว แต่ก็ไม่ได้ผลเช่นกัน

CELERY_APP="tasks"

0

ฉันมีปัญหากับคลาส PeriodicTask ใน django-celery ในขณะที่ชื่อของพวกเขาปรากฏขึ้นได้ดีเมื่อเริ่มต้นคนงานคื่นฉ่ายการดำเนินการทุกครั้งที่เรียก:

KeyError: u'my_app.tasks.run '

งานของฉันคือคลาสชื่อ 'CleanUp' ไม่ใช่แค่เมธอดที่เรียกว่า '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

คื่นฉ่ายไม่รองรับการนำเข้าแบบสัมพัทธ์ดังนั้นใน celeryconfig.py ของฉันคุณต้องนำเข้าแบบสัมบูรณ์

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

0

รายการเพิ่มเติมในรายการที่มีประโยชน์จริงๆ

ฉันพบว่าคื่นฉ่ายไม่น่าให้อภัยที่เกี่ยวข้องกับข้อผิดพลาดในงาน (หรืออย่างน้อยฉันก็ไม่สามารถติดตามรายการบันทึกที่เหมาะสม) และไม่ได้ลงทะเบียน ฉันมีปัญหาหลายอย่างในการเรียกใช้ Celery เป็นบริการซึ่งส่วนใหญ่เกี่ยวข้องกับการอนุญาต

ข้อมูลล่าสุดที่เกี่ยวข้องกับสิทธิ์ในการเขียนไฟล์บันทึก ฉันไม่มีปัญหาในการพัฒนาหรือเรียกใช้คื่นฉ่ายที่บรรทัดคำสั่ง แต่บริการรายงานว่างานไม่ได้ลงทะเบียน

ฉันต้องการเปลี่ยนสิทธิ์ของโฟลเดอร์บันทึกเพื่อเปิดใช้งานบริการเพื่อเขียนมัน


0

2 เซ็นต์ของฉัน

ฉันได้รับสิ่งนี้ในรูปนักเทียบท่าโดยใช้อัลไพน์ การตั้งค่า django อ้างอิง/dev/logสำหรับการบันทึกไปที่ syslog แอพ django และคนงานคื่นฉ่ายต่างก็ขึ้นอยู่กับภาพเดียวกัน จุดsyslogdเริ่มต้นของภาพแอป django เปิดตัวเมื่อเริ่มต้น แต่จุดสำหรับคนงานขึ้นฉ่ายไม่ นี้ได้ก่อให้เกิดสิ่งที่ต้องการที่จะล้มเหลวเพราะจะไม่มีการใด ๆ./manage.py shell /dev/logคนงานขึ้นฉ่ายก็ไม่วาย แต่กลับเพิกเฉยต่อการเปิดตัวแอปที่เหลือซึ่งรวมถึงshared_taskรายการโหลดจากแอปพลิเคชันในโครงการ django


0

ในกรณีของฉันข้อผิดพลาดเกิดจากคอนเทนเนอร์หนึ่งไฟล์ที่สร้างขึ้นในโฟลเดอร์ที่ติดตั้งบนระบบไฟล์โฮสต์ด้วย docker-compose

ฉันต้องลบไฟล์ที่สร้างโดยคอนเทนเนอร์บนระบบโฮสต์และฉันก็สามารถเปิดโปรเจ็กต์ได้อีกครั้ง

sudo rm -Rf ชื่อพับ

(ฉันต้องใช้ sudo เพราะไฟล์เป็นของผู้ใช้รูท)

เวอร์ชัน Docker: 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

เมื่อเรียกใช้ขึ้นฉ่ายด้วยคำสั่ง "celery -A conf worker -l info" งานทั้งหมดที่ระบุไว้ในบันทึกเหมือนที่ฉันมี conf.celery.debug_task ฉันได้รับข้อผิดพลาดเนื่องจากฉันไม่ได้ให้เส้นทางงานที่แน่นอนนี้ ดังนั้นโปรดตรวจสอบอีกครั้งโดยการคัดลอกและวางรหัสงานที่แน่นอน



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, )))คำตอบในการแก้ไขปัญหาของคุณอยู่ในบรรทัดแรกของการส่งออกที่คุณให้ไว้ในคำถามของคุณ: คื่นฉ่ายไม่สามารถทำอะไรได้

สาเหตุที่ไม่พบ celeryconfig น่าจะไม่อยู่ใน PYTHONPATH ของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.