Я пытаюсь реализовать функцию в качестве конечной точки, которая использует отфильтрованную коллекцию MongoDB (я получаю почтовый документ) для выполнения своей математики и возврата результата обратно клиенту.
То, что я до сих пор делал на своем app.py
, было:
from __future__ import unicode_literals
from eve import Eve
import gunicorn.app.base
from gunicorn.six import iteritems
import psutil
def my_func(response):
lsne = sorted(response['var0054'])
net = response['var0054'].sum()
lne = (lsne['var0054']/net)*100
lsms = sorted(response['var0055'])
nms = response['var0055'].sum()
lms = (lsms['var0055']/nms)*100
result1 = sum(lne^2)
result2 = sum(lme^2)
response.clear()
response['ind0063'] = result1
response['ind0062'] = result2
app = Eve()
app.on_fetched_resource_myfunc += my_func
class StandaloneApplication(gunicorn.app.base.BaseApplication):
def __init__(self, app, options=None):
self.options = options or {}
self.application = app
super(StandaloneApplication, self).__init__()
def load_config(self):
config = dict([(key, value) for key, value in iteritems(self.options)
if key in self.cfg.settings and value is not None])
for key, value in iteritems(config):
self.cfg.set(key.lower(), value)
def load(self):
return self.application
if __name__ == '__main__':
NUM_CORES = psutil.cpu_count()
options = {
'bind': '%s:%s' % ('0.0.0.0', '8000'),
'workers': NUM_CORES * 2 + 1,
'worker_class': 'gevent',
'threads': 2 * NUM_CORES
}
StandaloneApplication(app, options).run()
а по моему settings.py
:
MONGO_URI = "mongodb://localhost:27017/portal_db"
tab_schema = {
"schema": {
"var0046":{"type": "integer"},
"var0048":{"type": "integer"},
"var0052":{"type": "integer"},
"var0058":{"type": "integer"},
"var0054":{"type": "integer"},
"var0055":{"type": "integer"}
}
}
myfunc = {
'datasource': {
'source': 'tab0043'
},
'pagination': False
}
DOMAIN = {
"tab0043": tab_schema,
"myfunc": myfunc
}
Я могу получить доступ к своим данным через "http://0.0.0.0:8000/tab0043", но когда я пробую конечную точку
«http: 0.0.0.0: 8000 / myfunc», я получаю сообщение об ошибке:
curl: (52) Empty reply from server