简体   繁体   English

Flask。 Celery 不运行任务

[英]Flask. Celery doesn't run task

I run the task in the celery (with redis ).我在celery (使用redis )中运行任务。

create_article_from_gsheet.delay()

app/ init .py应用程序/初始化.py

from celery import Celery
from webapp.utils.celery_util import init_celery
​
​
celery = Celery('webapp', config_source="webapp.celeryconfig")
​
​
def create_app(object_name: str):
    ...
    app.config.from_object(object_name)
    init_celery(app, celery=celery)
    ...
    return app

webapp/celeryconfig.py webapp/celeryconfig.py

broker_url = 'redis://localhost:6379/0'
imports = ('webapp.articles.helpers.gsheets',)
result_backend = 'redis://localhost:6379'
​```
​
# webapp/runcelery.py
​```
import os
​
from webapp import celery, create_app
from webapp.utils.celery_util import init_celery
​
​
env = os.environ.get("WEBAPP_ENV", "dev")
app = create_app("config.%sConfig" % env.capitalize())
init_celery(app, celery)

webapp/utils/celery_util.py webapp/utils/celery_util.py

def init_celery(app, celery):
    TaskBase = celery.Task
​
    class ContextTask(TaskBase):
        abstract = True
        def __call__(self, *args, **kwargs):
            with app.app_context():
                return TaskBase.__call__(self, *args, **kwargs)
    celery.Task = ContextTask

webapp/articles/helpers/gsheets/py webapp/articles/helpers/gsheets/py

from webapp import celery as celery_app
​
​
@celery_app.task
def create_article_from_gsheet():
   ...

#celery -A webapp.runcelery:celery worker #celery -A webapp.runcelery:celery 工人

 -------------- celery@DESKTOP-V4QR5B3 v4.4.7 (cliffs)
--- ***** -----
-- ******* ---- Windows-10-10.0.18362-SP0 2020-08-07 14:06:44
- *** --- * ---
- ** ---------- [config]
- ** ---------- .> app:         webapp:0x2b60bdca640
- ** ---------- .> transport:   redis://localhost:6379/0
- ** ---------- .> results:     redis://localhost:6379/
- *** --- * --- .> concurrency: 4 (prefork)
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
--- ***** -----
 -------------- [queues]
                .> celery           exchange=celery(direct) key=celery

[tasks]
  . webapp.articles.helpers.gsheets.create_article_from_gsheet

celery -A webapp.runcelery:celery beat celery -A webapp.runcelery:celery 节拍

__    -    ... __   -        _
LocalTime -> 2020-08-07 13:42:20
Configuration ->
    . broker -> redis://localhost:6379/0
    . loader -> celery.loaders.app.AppLoader
    . scheduler -> celery.beat.PersistentScheduler
    . db -> celerybeat-schedule
    . logfile -> [stderr]@%WARNING
    . maxinterval -> 5.00 minutes (300s)

Launched redis .推出redis There is a connection有联系

I don't understand what the problem might be?我不明白问题可能是什么?

It looks like you're running this on a Windows machine.看起来您正在 Windows 机器上运行它。 Celery 4.x does not support Windows. Celery 4.x 不支持 Windows。

https://docs.celeryproject.org/en/master/faq.html#does-celery-support-windows https://docs.celeryproject.org/en/master/faq.html#does-celery-support-windows

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM