spacepaste

  1.  
  2. ERROR:
  3. Traceback (most recent call last):
  4. File "/cue/TonePy_AWSLambda/toneEmbedder_flask/env/lib/python3.6/site-packages/kombu/serialization.py", line 50, in _reraise_errors
  5. yield
  6. File "/cue/TonePy_AWSLambda/toneEmbedder_flask/env/lib/python3.6/site-packages/kombu/serialization.py", line 221, in dumps
  7. payload = encoder(data)
  8. File "/cue/TonePy_AWSLambda/toneEmbedder_flask/env/lib/python3.6/site-packages/kombu/utils/json.py", line 69, in dumps
  9. **dict(default_kwargs, **kwargs))
  10. File "/Users/pi/anaconda/lib/python3.6/json/__init__.py", line 238, in dumps
  11. **kw).encode(obj)
  12. File "/Users/pi/anaconda/lib/python3.6/json/encoder.py", line 199, in encode
  13. chunks = self.iterencode(o, _one_shot=True)
  14. File "/Users/pi/anaconda/lib/python3.6/json/encoder.py", line 257, in iterencode
  15. return _iterencode(o, 0)
  16. File "/cue/TonePy_AWSLambda/toneEmbedder_flask/env/lib/python3.6/site-packages/kombu/utils/json.py", line 59, in default
  17. return super(JSONEncoder, self).default(o)
  18. File "/Users/pi/anaconda/lib/python3.6/json/encoder.py", line 180, in default
  19. o.__class__.__name__)
  20. TypeError: Object of type 'Embed' is not JSON serializable
  21. # app.py
  22. @flaskApp.route('/embed-async', methods=['POST'] )
  23. def embedtone_async_handler():
  24. try:
  25. j = request.get_json(force=True)
  26. E = Embed.Embed(j)
  27. # Start Asyncronous tasks
  28. E.pipeline_async_start()
  29. # Send task to Celery worker
  30. tasks.embed_tone.delay(E) # <-- THIS IS CAUSING IT
  31. return jsonify( E.make_triggers() )
  32. :
  33. #tasks.py
  34. from theApp import flaskApp
  35. from celery import Celery
  36. from celery.result import AsyncResult
  37. def make_celery(app):
  38. celery = Celery(
  39. app.import_name,
  40. backend=app.config['CELERY_RESULT_BACKEND'],
  41. broker=app.config['CELERY_BROKER_URL']
  42. )
  43. celery.conf.update(app.config)
  44. class ContextTask(celery.Task):
  45. def __call__(self, *args, **kwargs):
  46. with app.app_context():
  47. return self.run(*args, **kwargs)
  48. celery.Task = ContextTask
  49. return celery
  50. celery = make_celery(flaskApp)
  51. def make_result(id, celery_app=celery):
  52. return AsyncResult(id, app=celery_app)
  53. @celery.task() # can specify timeouts: time_limit = 1000
  54. def add_together(a, b):
  55. return a + b
  56. @celery.task()
  57. def embed_tone(embedObject):
  58. # TODO: If you want exceptions caught and stored as results, this is where to do it
  59. return embedObject.pipeline_async_finish()
  60.