{"action":"created","issue":{"url":"https://api.github.com/repos/inveniosoftware/invenio/issues/3295","labels_url":"https://api.github.com/repos/inveniosoftware/invenio/issues/3295/labels{/name}","comments_url":"https://api.github.com/repos/inveniosoftware/invenio/issues/3295/comments","events_url":"https://api.github.com/repos/inveniosoftware/invenio/issues/3295/events","html_url":"https://github.com/inveniosoftware/invenio/issues/3295","id":90040891,"number":3295,"title":"RFC celery: msgpack could support custom types","user":{"login":"dset0x","id":8993055,"avatar_url":"https://avatars.githubusercontent.com/u/8993055?v=3","gravatar_id":"","url":"https://api.github.com/users/dset0x","html_url":"https://github.com/dset0x","followers_url":"https://api.github.com/users/dset0x/followers","following_url":"https://api.github.com/users/dset0x/following{/other_user}","gists_url":"https://api.github.com/users/dset0x/gists{/gist_id}","starred_url":"https://api.github.com/users/dset0x/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dset0x/subscriptions","organizations_url":"https://api.github.com/users/dset0x/orgs","repos_url":"https://api.github.com/users/dset0x/repos","events_url":"https://api.github.com/users/dset0x/events{/privacy}","received_events_url":"https://api.github.com/users/dset0x/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/inveniosoftware/invenio/labels/RFC","name":"RFC","color":"009800"}],"state":"open","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/inveniosoftware/invenio/milestones/6","html_url":"https://github.com/inveniosoftware/invenio/milestones/v2.2.0","labels_url":"https://api.github.com/repos/inveniosoftware/invenio/milestones/6/labels","id":696686,"number":6,"title":"v2.2.0","description":"","creator":{"login":"jirikuncar","id":189798,"avatar_url":"https://avatars.githubusercontent.com/u/189798?v=3","gravatar_id":"","url":"https://api.github.com/users/jirikuncar","html_url":"https://github.com/jirikuncar","followers_url":"https://api.github.com/users/jirikuncar/followers","following_url":"https://api.github.com/users/jirikuncar/following{/other_user}","gists_url":"https://api.github.com/users/jirikuncar/gists{/gist_id}","starred_url":"https://api.github.com/users/jirikuncar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jirikuncar/subscriptions","organizations_url":"https://api.github.com/users/jirikuncar/orgs","repos_url":"https://api.github.com/users/jirikuncar/repos","events_url":"https://api.github.com/users/jirikuncar/events{/privacy}","received_events_url":"https://api.github.com/users/jirikuncar/received_events","type":"User","site_admin":false},"open_issues":185,"closed_issues":45,"state":"open","created_at":"2014-06-20T11:43:39Z","updated_at":"2015-06-22T08:23:11Z","due_on":"2015-07-30T22:00:00Z","closed_at":null},"comments":4,"created_at":"2015-06-22T08:21:30Z","updated_at":"2015-06-22T09:06:14Z","closed_at":null,"body":"### Intro\r\nIn Invenio we use `Celery`, which uses `kombu` to serialize messages. `kombu` supports a number of backends, of which we use `msgpack`.\r\n\r\n### Issue\r\n`msgpack` supports many native types (strings, lists, etc), but has no support for more complex types such as `datetime` and `enum`, or, naturally, any custom types we define in our code. This is an issue because business logic should not contain serialization code.\r\n\r\n### Solution\r\nFortunately `msgpack` us to extend its serialization functionality, by providing 128 \"slots\" for application-specific types. [(spec)](https://github.com/msgpack/msgpack/blob/master/spec.md#types-extension-type)\r\n\r\n### Proposal\r\nWith a bit of glue [(WIP PoC PR)](https://github.com/inveniosoftware/invenio/pull/3294) and perhaps the assistance of `flask-registry`, modules would be able to define type matchers as well as serializers and deserializers for the types that they will want to use, even if they are specific to themselves.\r\n\r\ncc. @jalavik @jirikuncar @hachreak "},"comment":{"url":"https://api.github.com/repos/inveniosoftware/invenio/issues/comments/114046079","html_url":"https://github.com/inveniosoftware/invenio/issues/3295#issuecomment-114046079","issue_url":"https://api.github.com/repos/inveniosoftware/invenio/issues/3295","id":114046079,"user":{"login":"crepererum","id":1529400,"avatar_url":"https://avatars.githubusercontent.com/u/1529400?v=3","gravatar_id":"","url":"https://api.github.com/users/crepererum","html_url":"https://github.com/crepererum","followers_url":"https://api.github.com/users/crepererum/followers","following_url":"https://api.github.com/users/crepererum/following{/other_user}","gists_url":"https://api.github.com/users/crepererum/gists{/gist_id}","starred_url":"https://api.github.com/users/crepererum/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/crepererum/subscriptions","organizations_url":"https://api.github.com/users/crepererum/orgs","repos_url":"https://api.github.com/users/crepererum/repos","events_url":"https://api.github.com/users/crepererum/events{/privacy}","received_events_url":"https://api.github.com/users/crepererum/received_events","type":"User","site_admin":false},"created_at":"2015-06-22T09:06:14Z","updated_at":"2015-06-22T09:06:14Z","body":"@dset0x can you provide a number mapping of your answer, because GitHub Markdown does not process numbered lists which do not follow the `1,2,...` pattern :disappointed: "}}