0
CELERY_ALWAYS_EAGER=False
私のページを読み込むと、私のウサギはメッセージを受け取りますが、消費することはありません。 CELERY_ALWAYS_EAGER = True
の場合、私の仕事は消費されますが、私のページはいつも仕事を終えるのを待っているのでロードされており、こうしてherokuにtimeout
が作成され、エラーが発生します。 ここでサークルに参加します。セロリの全目的は非同期ですが、なぜこれをしますか?他の設定がありませんか?セロリはいつも熱心に実行していますが、タスクは非同期です
BROKER_URL=['amqp://[email protected]//','amqp://[email protected]/ysicvcrh']
BROKER_POOL_LIMIT = 1
BROKER_CONNECTION_MAX_RETRIES = None
BROKER_CONNECTION_TIMEOUT = 30
EVENT_QUEUE_EXPIRES = 60
CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'
CELERY_ACCEPT_CONTENT = ['pickle','json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
#CELERY_RESULT_BACKEND='djcelery.backends.database:DatabaseBackend' # AMQP is not recommended as result backend as it creates thousands of queues
CELERY_ALWAYS_EAGER = False
task.py
from __future__ import absolute_import, unicode_literals
import requests
import json
import time
import sys
import os
import random
from os import path
from celery import Celery
sys.path.append(path.dirname(path.dirname(path.abspath(__file__))))
from lib import myfiles
from django.db import models
from .models import mymodels
import django
django.setup()
@task(name="get_myfunction")
def get_data(user, items):
#runs a bunch of things
#saves data
#all this and page spinner on the browser tab just keeps spinning until its done
celery_settings.py
from __future__ import absolute_import
import os
from celery import Celery
from django.conf import settings
# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'app.settings')
app = Celery('app', broker=['amqp://[email protected]//','amqp://hello:[email protected]/ysicvcrh'])
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
@app.task(bind=True)
def debug_task(self):
print('Request: {0!r}'.format(self.request))
作業を実行するには、作業者を実行する必要があります。ドキュメントhttp://docs.celeryproject.org/en/latest/userguide/workers.html#id1を参照してください。 – Jinje