gpt4 book ai didi

python - 如何将基于类的任务传递给 CELERY_BEAT_SCHEDULE

转载 作者:太空宇宙 更新时间:2023-11-04 08:44:31 25 4
gpt4 key购买 nike

docs 中所示基于类的任务是表达复杂逻辑的一种公平方式。

但是,文档没有指定如何将新创建的 Shiny 的基于类的任务添加到您的 CELERY_BEAT_SCHEDULE(使用 django)

我尝试过的事情:celery.py

app.autodiscover_tasks(lambda: settings.INSTALLED_APPS, 'task_summary')
@app.on_after_configure.connect
def setup_periodic_tasks(sender, **kwargs):
from payments.tasks.generic.payeer import PayeerPaymentChecker
from payments.tasks.generic.ok_pay import OkPayPaymentChecker

okpay_import = OkPayPaymentChecker()
payeer_imprt = PayeerPaymentChecker()

sender.add_periodic_task(60.0, okpay_import.s(),
name='OkPay import',
expires=30)

sender.add_periodic_task(60.0, payeer_imprt.s(),
name='Payeer import',
expires=30)

-- 或者 --

payments/task_summary.py

from tasks.generic.import import OkPayPaymentChecker, PayeerPaymentChecker
run_okpay = OkPayPaymentChecker()
run_payeer = PayeerPaymentChecker()

CELERY_BEAT_SCHEDULE = {
# yes, i did try referring to the class here
'check_okpay_payments': {

'task': 'payments.tasks.task_summary.run_okpay',
'schedule': timedelta(seconds=60),
},
'check_payeer_payments': {
'task': 'payments.task_summary.run_payeer',
'schedule': timedelta(seconds=60),
},
}

真的不知道怎么办,还原成这样:payments/task_summary.py/

from payments.tasks.generic.ok_pay import OkPayPaymentChecker
from payments.tasks.generic.payeer import PayeerPaymentChecker
from celery import shared_task


@shared_task
def run_payer():
instance = PayeerPaymentChecker()
return instance.run()


@shared_task
def run_okpay():
instance = OkPayPaymentChecker()
return instance.run()

我查过但没有帮助我/解决问题的在线资源:

最佳答案

我也花了一段时间才找到这个问题的答案,因为这个问题在谷歌搜索结果中排名靠前,我想我会把它放在这里给那些正在努力寻找答案的人:

您可以像添加普通任务一样添加它,但使用类名。

CELERY_BEAT_SCHEDULE = {
'my_task_name': {
'task': 'mymodule.tasks.MyTaskClass',
'schedule': timedelta(seconds=60),
},

(假设您有 mymodule/tasks.py :

from celery import Task

class MyTaskClass(Task):

def run(self, *args, **kwargs):
... stuff ...

关于python - 如何将基于类的任务传递给 CELERY_BEAT_SCHEDULE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41933814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com