django_apscheduler.models.DoesNotExist: DjangoJob соответствующий запрос не существует

Привет я пытаюсь реализовать планировщик заданий, используя djangorestframework, django-apscheduler и библиотеки запросов, но когда я пытаюсь опубликовать запрос для планирования задания, появляется следующая ошибка, хотя задание запланировано, но ответ является кодом Внутренняя ошибка сервера (500) с последующей ошибкой

Трассировка (последний вызов был последним): файл "/Users/gauravyadav/Python/env4/lib/python3.6/site-packages/django/core/handlers/exception.py", строка 35, во внутренней

     response = get_response(request)

Файл "/Users/gauravyadav/Python/env4/lib/python3.6/site-packages/django/core/handlers/base.py", строка 128, в _get_response

     response = self.process_exception_by_middleware(e, request)

Файл "/Users/gauravyadav/Python/env4/lib/python3.6/site-packages/django/core/handlers/base.py", строка 126, в _get_response

    response = wrapped_callback(request, *callback_args, 
               **callback_kwargs)

Файл "/Users/gauravyadav/Python/env4/lib/python3.6/site-packages/django/views/decorators/csrf.py", строка 54, в wrapped_view

     return view_func(*args, **kwargs)

Файл "/Users/gauravyadav/Python/env4/lib/python3.6/site-packages/django/views/generic/base.py", строка 69, в поле зрения

    return self.dispatch(request, *args, **kwargs)

Файл "/Users/gauravyadav/Python/env4/lib/python3.6/site-packages/rest_framework/views.py", строка 483, в отправке

    response = self.handle_exception(exc)

Файл "/Users/gauravyadav/Python/env4/lib/python3.6/site-packages/rest_framework/views.py", строка 443, в handle_exception

   self.raise_uncaught_exception(exc)

Файл "/Users/gauravyadav/Python/env4/lib/python3.6/site-packages/rest_framework/views.py", строка 480, в ответе об отправке = обработчик (запрос, * аргументы, **kwargs)

Файл "/Users/gauravyadav/Python/env4/Scheduler3/distribute_jobs/views.py", строка 298, в сообщении

   scheduler.start()

Файл "/Users/gauravyadav/Python/env4/lib/python3.6/site-packages/apscheduler/schedulers/blocking.py", строка 19, в начале

   self._main_loop()

Файл "/Users/gauravyadav/Python/env4/lib/python3.6/site-packages/apscheduler/schedulers/blocking.py", строка 30, в _main_loop

     wait_seconds = self._process_jobs()

Файл "/Users/gauravyadav/Python/env4/lib/python3.6/site-packages/apscheduler/schedulers/base.py", строка 987, в _process_jobs

   jobstore_next_run_time = jobstore.get_next_run_time()

Файл "/Users/gauravyadav/Python/env4/lib/python3.6/site-packages/django_apscheduler/jobstores.py", строка 29, во внутреннем

  return func(*a, **k)

Файл "/Users/gauravyadav/Python/env4/lib/python3.6/site-packages/django_apscheduler/jobstores.py", строка 79, в get_next_run_time

 return 

// невозможно идентифицировать этот код deserialize_dt(DjangoJob.objects.filter(next_run_time__isnull=False).earlie s .t('next_run_time').next_run_time)///

Файл "/Users/gauravyadav/Python/env4/lib/python3.6/site-packages/django/db/models/query.py", строка 597, в самой ранней версии

  return self._earliest_or_latest(*fields, field_name=field_name)

Файл "/Users/gauravyadav/Python/env4/lib/python3.6/site-packages/django/db/models/query.py", строка 594, в _earliest_or_latest

     return obj.get()

Файл "/Users/gauravyadav/Python/env4/lib/python3.6/site-packages/django/db/models/query.py", строка 403, в get

   self.model._meta.object_name

django_apscheduler.models.DoesNotExist: DjangoJob соответствующий запрос не существует. [04 / Jul / 2018 12:19:05] "POST / jobs / HTTP / 1.1" 500 120459

    -

заголовок


models.py

Класс Jobs (models.Model, ListCharField, ListTextField):

title = models.CharField(max_length=20, blank=False, default='')
tenantId = models.TextField(max_length=50, null=True, default='')
studentid = models.CharField(max_length=20, blank=False, default=None, 
            null=True, db_index=False)
contentId = models.IntegerField(blank=False, null=False, db_index=False)
version = models.IntegerField(null=True)
appVersion = models.CharField(max_length=50, null=True)
devicePlatformName = models.TextField(max_length=50, null=True)
deviceIdentity = models.TextField(max_length=200, null=True)
deviceToken = models.TextField(max_length=200, null=True) 
fcmToken = models.TextField(max_length=200, null=True) 
fbTokenId = models.TextField(max_length=200, null=True)
userRole = models.TextField(max_length=50, null=True)
users = ListCharField(base_field=models.CharField(max_length=50, 
                 null=True), null=True, size=100, max_length=20000)
# # users = models.CharField(max_length=600, null=True, default='')
allUsers = models.BooleanField(default=False)
groupIdList = ListTextField(base_field=models.IntegerField(null=True), 
              null=True)

sendSMS = models.BooleanField(default=False)
sendEmail = models.BooleanField(default=False)
distributeDateTime = models.CharField(max_length=200, null=True)
contentType = models.CharField(max_length=200, null=True)
distributeOn = models.CharField(max_length=200, null=True)
orgId = models.CharField(max_length=200, null=False, default=None)
run_immediate = models.BooleanField(default=False)


class Meta:
    ordering = ('title',)

####### serializers.py ########

Класс JobsSerializer (serializers.ModelSerializer):

users=serializers.ListField(child=serializers.CharField(max_length=200))
groupIdList = serializers.ListField(child=serializers.IntegerField())

class Meta:
    model = Jobs
    fields = (
        'title',
        'tenantId',
        'studentid',
        'contentId',
        'version',
        'appVersion',
        'devicePlatformName',
        'deviceIdentity',
        'deviceToken',
        'fcmToken',
        'fbTokenId',
        'userRole',
        'groupIdList',
        'allUsers',
        'users',
        'sendSMS',
        'sendEmail',
        'distributeDateTime',
        'contentType',
        'distributeOn',
        'orgId',
        'run_immediate',
        # 'deviceInfoData'

    )


def create(self, validated_data):
    """
    Create and return a new `Jobs` instance, given the validated data.
    """
    return Jobs.objects.create(**validated_data)
######### views.py
 from rest_framework import mixins
 from rest_framework import generics

 from Scheduler3 import settings


 from .models import Jobs
 from .serializers import JobsSerializers
 import requests
 import json

 from apscheduler.schedulers.blocking import BlockingScheduler
 from apscheduler.jobstores.sqlalchemy import SQLAlchemyJobStore


 from django_apscheduler.jobstores import DjangoJobStore


 scheduler = BlockingScheduler()

 url = 'mysql+mysqldb://' + settings.DATABASES['default']['USER'] + ':' 
        \
       + settings.DATABASES['default']['PASSWORD'] + '@' + 
       settings.DATABASES['default']['HOST'] + '/' + \
       settings.DATABASES['default']['NAME']

# jobstores = dict(default=SQLAlchemyJobStore(url=url))
# scheduler.configure(jobstores=jobstores)
scheduler.add_jobstore(DjangoJobStore(), "default")


def date_time_converter(distributeOn):


    splited_run_date = '{}.000000'.format(distributeOn)

    return splited_run_date





  def schedule_job(users, contentId, orgId, allUsers, contentType,
                   tenantId, studentid, version, appVersion,
                   deviceInfoData, devicePlatformName, deviceIdentity,
                   deviceToken, fcmToken, fbTokenId, userRole,
                   groupIdList, sendSMS, sendEmail):
       payload = {

                  "tenantId": "{}".format(tenantId),
                  "studentid": "{}".format(studentid),

                  "version": '{}'.format(version),
                  "appVersion": "{}".format(appVersion),
                  "devicePlatformName": "{}".format(devicePlatformName),
                  "deviceIdentity": "{}".format(deviceIdentity),
                  "deviceToken": "{}".format(deviceToken),
                  "fcmToken": "{}".format(fcmToken),
                  "fbTokenId": "{}".format(fbTokenId),
                  "userRole": "{}".format(userRole),
                  "users": users,
                  "allUsers": '{}'.format(allUsers) if 1 else 0,

                  "groupIdList": groupIdList,
                  "sendSMS": '{}'.format(sendSMS) if 1 else 0,
                  "sendEmail": '{}'.format(sendEmail) if 1 else 0,

                  "orgId": "{}".format(orgId),
                  "deviceInfoData": deviceInfoData

                }
      print("Payload")
      print(payload)



      url = 'http//:designated/url/distribute
      r = requests.put(url, data=json.dumps(payload), headers=headers)
      print(r.status_code, users)
      print(r.reason)
      print(r.text)




   class JobList(mixins.ListModelMixin,
                 mixins.CreateModelMixin,
                 generics.GenericAPIView):

       """
      List all jobs, or create a new job.
       """

      queryset = Jobs.objects.all()
      serializer_class = JobsSerializers

    def get(self, request, *args, **kwargs):
       return self.list(request, *args, **kwargs)



    def post(self, request):
    # print('c')
    # scheduler.start()
    # print('d')
    print(request.data)

    """Serialzer data """


    """Fetching Request Data """

    distributeOn = request.data.get('distributeOn')
    jobTitle = request.data.get('title')
    users = request.data.get('users')
    contentId = request.data.get('contentId')
    orgId = request.data.get('orgId')
    contentType = request.data.get('contentType')
    tenantId = request.data.get('tenantId')
    studentid = request.data.get('studentid')
    version = request.data.get('version')
    appVersion = request.data.get('appVersion')
    deviceInfoData = request.data.get('deviceInfoData')
    devicePlatformName = request.data.get('devicePlatformName')
    deviceIdentity = request.data.get('deviceIdentity')
    deviceToken = request.data.get('deviceToken')
    fcmToken = request.data.get('fcmToken')
    fbTokenId = request.data.get('fbTokenId')
    userRole = request.data.get('userRole')
    groupIdList = request.data.get('groupIdList')

    sendSMS = request.data.get('sendSMS')

    sendEmail = request.data.get('sendEmail')

    allUsers = request.data.get('allUsers')

"" "Вызов функции форматирования времени по предоставленному времени для запуска задания" ""

    splited_datetime = date_time_converter(distributeOn)

"" "Создание планировщика и планирование работ" ""

    job1 = scheduler.add_job(schedule_job, 'date', 
                             run_date='{}'.format(splited_datetime),
                             misfire_grace_time=200, args=[users, 
                             contentId, orgId, allUsers, contentType,
                                                           tenantId, 
                              studentid, version, appVersion,

                              deviceInfoData, devicePlatformName, 
                              deviceIdentity,
                                                           deviceToken, 
                               fcmToken, fbTokenId, userRole,
                                                           groupIdList, 
                             sendSMS, sendEmail],
                             max_instances=20,
                             replace_existing=True)



    if not scheduler.running == True:
        print('c')
        scheduler.start()
        print('d')
    print("after add job method called")
    print(job1.id)


    return self.create(request)

########## urls.py ######

from django.conf.urls import url, include
from django.contrib import admin
from django.urls import path

urlpatterns = [
              url('admin/', admin.site.urls),
              url(r'^', include('distribute_jobs.urls')),
              ]
### distribute_jobs / url.py
  from django.conf.urls import url
  from rest_framework.urlpatterns import format_suffix_patterns

 from distribute_jobs import views

 urlpatterns = [
        url(r'^jobs/$', views.JobList.as_view()),
        url(r'^jobs/(?P<pk>[0-9]+)/$', views.JobDetail.as_view()),
         ]
urlpatterns = format_suffix_patterns(urlpatterns)

1 ответ

Привет, это проблема с ошибкой в ​​django-apscheduler версии =0.2.11, которая устранена в версии =0.2.12 для получения более подробной информации, пожалуйста, нажмите здесь

Другие вопросы по тегам