这是我的代码:
项目/__init__.py
from __future__ import absolute_import, unicode_literals
from .celery import app as celery_app
__all__ = ('celery_app',)
芹菜.py
from __future__ import absolute_import
import os
from celery import Celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proj.settings')
app = Celery("proj")
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
任务.py
@app.task
def send_sms_prompt_1_hour(order_id):
order = HelpSession.objects.get(id=order_id)
text_message = 'Текст сообщения'
if not order or order.cancel_at:
return
sms.send_sms(order.client.phone, text_message)
return None
短信.py
def send_sms(phone, msg):
params = dict(
login=settings.SMS_LOGIN, psw=settings.SMS_PASSWORD,
phones=phone, charset='utf-8', mes=msg
)
if settings.DEBUG:
logger.info(f'sending sms {params}')
else:
resp = requests.get('example_addres', params)
if not resp.ok:
raise Exception(resp.content)
return resp.content
错误的本质是什么。发送短信本身是可以的,但是当通过 celery 调用 send_sms 函数时,它将以下文本输出到控制台
[31/May/2022 19:25:09,601] sending sms {'login': 'example', 'example': 'example', 'phones': 'example', 'charset': 'utf-8', 'mes': 'example'}
示例是我的文本不显示敏感信息。用正确的数据代替它。
我再说一遍,如果你不是通过 celery 调用这个函数,它可以正常工作