APS Scheduler поднимает исключение без причины django
Даже если целевая функция получает оба аргумента, она все равно выдает ошибку из-за отсутствия параметров? Интересно, почему
check_device() missing 1 required positional argument: 'device_id'
Job "check_device (trigger: interval[0:00:30], next run at: 2021-11-05 19:35:24 IST)" raised an exception
Scheduler snip
def job_add(application_id,device_id,count):
scheduler.add_job(
check_device,
'interval',
args = (application_id,device_id,),
seconds=7,
jobstore = 'default',
id=f'my_job_{count}',
replace_existing=True,
max_instances = 7,
misfire_grace_time=None
)
функция, которую я вызываю
def check_device(application_id,device_id):
print('Mqtt connected ... calling on ',application_id,device_id)
mqttc = mqtt.Client(clientId)
Хорошо, поэтому размещаю этот ответ для справки на будущее, я полагаю, что APS хранит подпись каждого задания (функции) каким-то образом в базе данных Я ранее добавил задание с одним параметром, после внесения изменений он искал ранее определенную функцию также, но у нее не было позиционного параметра для device_id, Решение, просто удалите предыдущую историю заданий из БД ( этот ответ может быть не точным, но если кажется, что он дает вышеупомянутую ошибку без причины, удаление связанной истории заданий должно сделать работу)
Вот фиктивная версия вашего кода, которая работает. Убедитесь, что вы правильно передаете аргументы и вызываете функции :
from apscheduler.schedulers.blocking import BlockingScheduler
def check_device(application_id, device_id):
print(f"Application id: {application_id}, Device id: {device_id}")
scheduler = BlockingScheduler()
def job_add(application_id, device_id, count):
scheduler.add_job(
check_device,
"interval",
args=(
application_id,
device_id,
),
seconds=2,
jobstore="default",
id=f"my_job_{count}",
replace_existing=True,
max_instances=7,
misfire_grace_time=None,
)
job_add(application_id=5, device_id=2, count=1)
scheduler.start()