为此,我希望定期运行django中的代码,为此,我下载了芹菜并尝试配置它。
添加到settings.py中
INSTALLED_APPS = [
'django_celery_results',
'django_celery_beat',
}
CELERY_TIMEZONE = "Australia/Tasmania"
CELERY_TASK_TRACK_STARTED = True
CELERY_TASK_TIME_LIMIT = 30 * 60
CELERY_RESULT_BACKEND = 'django-db'
CELERY_RESULT_BACKEND = 'django-cache'
CELERY_CACHE_BACKEND = 'default'
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
'LOCATION': 'my_cache_table',
}
}创建了一个celery.py文件
import os
from celery import Celery
name='shop'
os.environ.setdefault('DJANGO_SETTINGS_MODULE', name+'.settings')
app = Celery(name)
app.config_from_object('django.conf:settings', namespace='CELERY')
app.conf.beat_schedule = {
'every-15-seconds':{
'task':'offers.tasks.send_email',
'schedule':15,
'args':('dsssew.com',)
}
}
app.conf.timezone = 'UTC'
app.autodiscover_tasks()
@app.task(bind=True)
def debug_task(self):
print(f'Request: {self.request!r}')创建了一个tasks.py文件
from __future__ import absolute_import, unicode_literals
from celery import shared_task
@shared_task
def send_email(email):
print(email)
@shared_task
def add(x, y):
return x + y
@shared_task
def mul(x, y):
return x * y
@shared_task
def xsum(numbers):
return sum(numbers)依次推出一切
python manage.py runserver
celery -A shop worker -l INFO
celery -A shop beat -l INFO打我
芹菜v5.0.5 (奇点)开始。__ -. __ -_ LocalTime -> 2021-02-18 20:31:57配置-> .代理-> amqp://来宾:**@localhost:5672//。装载机-> celery.loaders.app.AppLoader .调度器-> celery.beat.PersistentScheduler .db ->赛利贝特-日程安排。日志文件-> stderr@%INFO。最大间隔-> 5.00分钟(300秒) 2021-02-18 20:31:57,062: INFO/MainProcess beat: Starting.2021-02-18 20:31:57,216: INFO/MainProcess Scheduler:每-15秒发送适当的任务(offers.tasks.send_email)
但是工人每15秒就扔掉下一个
c:\users\admin\appdata\local\programs\python\python37\lib\site-packages\celery\app\trace.py:617: RuntimeWarning:
2021-02-19 16:18:02,275:/SpawnPoolWorker- 1 RuntimeWarning: TypeError('ord()预期长度为1的字符串,但int ‘):跟踪(最近调用):trace_task request=task_request中的文件"c:\users\admin\appdata\local\programs\python\python37\lib\site-packages\celery\app\trace.py",行400,文件"c:\users\admin\appdata\local\programs\python\python37\lib\site-packages\celery\backends\base.py",第435号,在store_result request=request中,**kwargs)文件"c:\users\admin\appdata\local\programs\python\python37\lib\site-packages\celery\backends\base.py",行851,在"c:\users\admin\appdata\local\programs\python\python37\lib\site-packages\celery\backends\base.py","c:\users\admin\appdata\local\programs\python\python37\lib\site-packages\django_celery_results\backends\cache.py",中,_store_result current_meta = self._get_task_meta_for(task_id)文件行869,_get_task_meta_for meta = self.get(self.get_key_for_task(task_id))第19行,在get返回文件(键) "c:\users\admin\appdata\local\programs\python\python37\lib\site-packages\django\core\cache\backends\db.py","c:\users\admin\appdata\local\programs\python\python37\lib\site-packages\django\core\cache\backends\db.py",第51行,在get返回self.get_many(键,版本).get(键,默认)文件“c:\users\admin\appdata\local\programs\python\python37\lib\site-packages\django\core\cache\backends\db.py”,第59行,在"c:\users\admin\appdata\local\programs\python\python37\lib\site-packages\django\core\cache\backends\base.py",get_many self.validate_key(key) get_many self.validate_key(Key)文件第249行中,在validate_key中memcache_key_warnings(Key)中用于警告:文件self.validate_key第287行,在memcache_key_warnings中,如果ord(char) < 33或ord(char) == 127: TypeError: ord()期望字符串长度为1,但int找到
我不明白什么是错误,以及如何纠正它?
发布于 2021-02-19 18:34:15
@sort事--试一试以下几个。它有很好的界面,您可以访问管理,并有一些非常棒的配置,您可以使用它来配置调度程序。
https://django-celery-beat.readthedocs.io/en/latest/https://stackoverflow.com/questions/66283063
复制相似问题