Browse Source

Starting on views and setting up celery settings

master
Raphael Roberts 7 years ago
parent
commit
22d2cc47ab
  1. 16
      restscrape/celery.py
  2. 14
      restscrape/serializers.py
  3. 7
      restscrape/urls.py
  4. 19
      restscrape/views.py

16
restscrape/celery.py

@ -1,12 +1,10 @@
from django.conf import settings
from celery import Celery
from restscrape.utils import get_tab
app = Celery("restscrape_funcs")
app.conf.broker_url = "redis://localhost:6379/0"
app.conf.result_backend = "redis://localhost:6379/0"
@app.task
def fetch_page(url, wait_for=0, proxy=None, use_adblock=True):
with get_tab(proxy=proxy, use_adblock=use_adblock) as tab:
return tab.open(url, wait_for=wait_for)
app.conf.broker_url = getattr(
settings, "MESSAGE_BROKER_URL", "amqp://myuser:mypassword@localhost:5672/myvhost"
)
app.conf.result_backend = getattr(
settings, "RESULT_BACKEND_URL", "redis://localhost:6379/0"
)

14
restscrape/serializers.py

@ -1 +1,15 @@
from rest_framework import serializers
from restscrape.models import ScrapeRequest, PendingScrapingResponse
class ScrapeRequestSerializer(serializers.ModelSerializer):
class Meta:
model = ScrapeRequest
fields = ("blocking", "url", "use_adblock", "xpath_labels", "wait_for", "proxy")
class PendingScrapingResponseSerializer(serializers.ModelSerializer):
class Meta:
model = PendingScrapingResponse
fields = "id"

7
restscrape/urls.py

@ -0,0 +1,7 @@
from django.urls import path
from restscrape.views import SubmitScrapeRequestView
urlpatterns = [path("submit/", SubmitScrapeRequestView.as_view(), name="scrape_submit")]

19
restscrape/views.py

@ -1,3 +1,18 @@
from django.shortcuts import render
from rest_framework.views import APIView
from rest_framework.generics import CreateAPIView
from rest_framework.response import Response
# Create your views here.
from restscrape.serializers import (
ScrapeRequestSerializer,
PendingScrapingResponseSerializer,
)
class SubmitScrapeRequestView(APIView):
def post(self, request, format=None):
serializer = ScrapeRequestSerializer(data=request.data)
if serializer.is_valid():
submission = serializer.create(serializer.validated_data)
pending = submission.submit()
pending_serializer = PendingScrapingResponseSerializer(pending)
return Response(data=pending_serializer.data)
Loading…
Cancel
Save