> Hi,
> I'm trying to figure out how to use the uWSGI spooler along Bottle and the
> uwsgidecorators.py module on Python 3 and I'm hitting a wall with regards
> to the need for using bytes.
> I'm using the examples in the uWSGI API - Python decorators docs (section
> Example: a Django session cleaner and video encoder):
>
> from task import encode_video
>
> def index(request):
> # launching video encoding
> encode_video.spool(filename=request.POST['video_filename'])
> return render_to_response('enqueued.html')
>
> The main spooler document states that "spool arguments must be bytes for
> Python3". How would the
> encode_video.spool(filename=request.POST['video_filename']) line therefore
> be adapted for Python 3?
>
> I ask because I've been trying things similar to the example but I always
> get this exception:
> Traceback (most recent call last):
> File "./bottle.py", line 861, in _handle
> return route.call(**args)
> File "./bottle.py", line 1737, in wrapper
> rv = callback(*a, **ka)
> File "./test.py", line 11, in test
> testspool.spool({b'videoname':name.encode()})
> File "./uwsgidecorators.py", line 87, in spool
> return self.__class__.__call__(self, *args, **kwargs)
> File "./uwsgidecorators.py", line 105, in __call__
> return _spoolraw.__call__(self, *args, **kwargs)
> File "./uwsgidecorators.py", line 83, in __call__
> return uwsgi.spool(arguments)
> ValueError: spooler callable dictionary must contains only bytes
>
> Yet, I thought I was feeding it bytes in the dictionary with my
> testspool.spool({b'videoname':name.encode()})
>
> Where am I going wrong?
> Thanks,
> -Martin
>
the uwsgidecorators module (at least for the spooler part) does not take
in account python3.
Check the class _spoolraw in it. Adapting it should be very easy.
Eventually avoid uwsgidecorators and use the low-level approach (simply
setting uwsgi.spooler callable)
--
Roberto De Ioris
http://unbit.it
_______________________________________________
uWSGI mailing list
[email protected]
http://lists.unbit.it/cgi-bin/mailman/listinfo/uwsgi