|
@@ -7,6 +7,7 @@ from urllib import urlencode
|
|
|
from urlparse import urlparse
|
|
|
|
|
|
from anyjson import serialize, deserialize
|
|
|
+from billiard.utils.functional import wraps
|
|
|
|
|
|
from celery import __version__ as celery_version
|
|
|
from celery.task.base import Task as BaseTask
|
|
@@ -79,6 +80,12 @@ class URL(object):
|
|
|
def _set_query(self, query):
|
|
|
self._query = query
|
|
|
|
|
|
+ def get_async(self, **kwargs):
|
|
|
+ return HttpDispatchTask.delay(str(self), "GET", **kwargs)
|
|
|
+
|
|
|
+ def post_async(self, **kwargs):
|
|
|
+ return HttpDispatchTask.delay(str(self), "POST", **kwargs)
|
|
|
+
|
|
|
query = property(_get_query, _set_query)
|
|
|
|
|
|
|
|
@@ -86,14 +93,16 @@ class HttpDispatch(object):
|
|
|
user_agent = "celery/%s" % celery_version
|
|
|
timeout = 5
|
|
|
|
|
|
- def __init__(self, url, task_kwargs, logger):
|
|
|
+ def __init__(self, url, method, task_kwargs, logger):
|
|
|
self.url = url
|
|
|
+ self.method = method
|
|
|
self.task_kwargs = task_kwargs
|
|
|
self.logger = logger
|
|
|
|
|
|
def _create_request(self):
|
|
|
url = URL(self.url)
|
|
|
url.query.update(self.task_kwargs)
|
|
|
+ print("URL: %s" % str(url))
|
|
|
req = urllib2.Request(str(url))
|
|
|
req.headers.update(self.http_headers)
|
|
|
return req
|
|
@@ -132,9 +141,9 @@ class HttpDispatch(object):
|
|
|
|
|
|
class HttpDispatchTask(BaseTask):
|
|
|
|
|
|
- def run(self, url, **kwargs):
|
|
|
+ def run(self, url, method="GET", **kwargs):
|
|
|
logger = self.get_logger(**kwargs)
|
|
|
- return HttpDispatch(url, kwargs, logger).execute()
|
|
|
+ return HttpDispatch(url, method, kwargs, logger).execute()
|
|
|
|
|
|
|
|
|
def http_task_response(fun, *args, **kwargs):
|