Job "WrappedAPIView raised an exception. TypeError: view() missing 1 required positional argument: 'request'
Job "WrappedAPIView raised an exception. TypeError: view() missing 1 required positional argument: 'request'
我使用 apscheduler 运行 一个每 5 秒调用函数 UserViewSet() 的作业。
views.py
@api_view(['GET'])
def UserViewSet(self):
usersData=UserSerializer(UserDetail.objects.all().order_by('name'), many=True)
return Response(usersData.data)
alerts_scheduler.py
from apscheduler.schedulers.background import BackgroundScheduler
from .. import views
from rest_framework.request import Request
def start():
scheduler=BackgroundScheduler()
scheduler.add_job(views.UserViewSet, 'interval', seconds=5)
scheduler.start()
但每次我 运行 我的应用程序时,我总是收到“工作”WrappedAPIView 引发了一个 exception.TypeError:view() 缺少 1 个必需的位置参数:'request'”。
我在 apps.py 开始计划的工作,如下所示:
from django.apps import AppConfig
class AppbackendConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'AppBackend'
def ready(self):
from .app_scheduler import alerts_schedule
alerts_schedule.start()
项目结构是这样的:
AppBackend
app_scheduler
__init__.py
alerts_scheduler.py
views.py
Django 视图接收请求并 returns 响应。无法将请求传递给 APScheduler。因此,尝试从 APScheduler 安排对视图的请求,或者编写一个单独的函数,向视图发出请求并将其安排为 运行.
例如,如果您想执行任何查询或更新任何更改,请不要调用视图,而是编写一个单独的函数,如下所示。
def test():
usersData=UserDetail.objects.all().order_by('name')
#do anything with the queryset
def start():
scheduler=BackgroundScheduler()
scheduler.add_job(test, 'interval', seconds=5)
scheduler.start()
还有
@api_view(['GET'])
def UserViewSet(self):
应该是:
@api_view(['GET'])
def UserViewSet(request):
我使用 apscheduler 运行 一个每 5 秒调用函数 UserViewSet() 的作业。
views.py
@api_view(['GET'])
def UserViewSet(self):
usersData=UserSerializer(UserDetail.objects.all().order_by('name'), many=True)
return Response(usersData.data)
alerts_scheduler.py
from apscheduler.schedulers.background import BackgroundScheduler
from .. import views
from rest_framework.request import Request
def start():
scheduler=BackgroundScheduler()
scheduler.add_job(views.UserViewSet, 'interval', seconds=5)
scheduler.start()
但每次我 运行 我的应用程序时,我总是收到“工作”WrappedAPIView 引发了一个 exception.TypeError:view() 缺少 1 个必需的位置参数:'request'”。
我在 apps.py 开始计划的工作,如下所示:
from django.apps import AppConfig
class AppbackendConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'AppBackend'
def ready(self):
from .app_scheduler import alerts_schedule
alerts_schedule.start()
项目结构是这样的:
AppBackend
app_scheduler
__init__.py
alerts_scheduler.py
views.py
Django 视图接收请求并 returns 响应。无法将请求传递给 APScheduler。因此,尝试从 APScheduler 安排对视图的请求,或者编写一个单独的函数,向视图发出请求并将其安排为 运行.
例如,如果您想执行任何查询或更新任何更改,请不要调用视图,而是编写一个单独的函数,如下所示。
def test():
usersData=UserDetail.objects.all().order_by('name')
#do anything with the queryset
def start():
scheduler=BackgroundScheduler()
scheduler.add_job(test, 'interval', seconds=5)
scheduler.start()
还有
@api_view(['GET'])
def UserViewSet(self):
应该是:
@api_view(['GET'])
def UserViewSet(request):