Closed kshnkvn closed 4 years ago
bbox are called Bounding Box which mean they represent a square.
OpenPoiService is using this format [[minLong, minLat], [maxLong,minLong]]
If you follow examples in the README, you'll find this example:
"bbox": [
[8.8034, 53.0756],
[8.7834, 53.0456]
]
So in your case, your bbox is invalid.
@zephylac ok, i fixed request:
curl -X POST \
http://13.84.170.186:8080/pois \
-H 'Content-Type: application/json' \
-d '{
"request": "pois",
"geometry": {
"bbox": [
[-87.922176, 41.995132],
[-87.805886, 42.066193]
]
}
}'
But this are still not works. Same error
Have you imported the correct osm file ?
@zephylac probably ... There were no errors during import, so I believe that yes, it is correct.
OSM file usually contains a small portion of geographical area. It means you can only have query which are inside this geographical area. Also are you using the docker build ?
Also are you using the docker build ?
@zephylac yes, docker.
It means you can only have query which are inside this geographical area.
Can you, please, explain this?
You can running instances with docker ps
. You should be able to see two containers named
openpoiservice_psql_postgis_db_1
and openpoiservice_gunicorn_flask_1
. Then you can check the logs of a container by using docker logs <container name>
.
Try docker logs openpoiservice_gunicorn_flask_1
and tell me if you see something like this:
File "/deploy/app/openpoiservice/server/api/views.py", line 123, in places
if all_args['geometry']['geojson']['type'] == 'MultiPolygon':
KeyError: 'geojson'
@zephylac no, nothing like it. But there are lot of errors like this:
[2020-02-20 07:16:58 +0000] [10] [ERROR] Error handling request /
Traceback (most recent call last):
File "/ops_venv/lib/python3.6/site-packages/flask/app.py", line 1612, in full_dispatch_request
rv = self.dispatch_request()
File "/ops_venv/lib/python3.6/site-packages/flask/app.py", line 1590, in dispatch_request
self.raise_routing_exception(req)
File "/ops_venv/lib/python3.6/site-packages/flask/app.py", line 1573, in raise_routing_exception
raise request.routing_exception
File "/ops_venv/lib/python3.6/site-packages/flask/ctx.py", line 294, in match_request
self.url_adapter.match(return_rule=True)
File "/ops_venv/lib/python3.6/site-packages/werkzeug/routing.py", line 1945, in match
raise NotFound()
werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/ops_venv/lib/python3.6/site-packages/flask/app.py", line 1982, in wsgi_app
response = self.full_dispatch_request()
File "/ops_venv/lib/python3.6/site-packages/flask/app.py", line 1614, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/ops_venv/lib/python3.6/site-packages/flask_cors/extension.py", line 161, in wrapped_function
return cors_after_request(app.make_response(f(*args, **kwargs)))
File "/ops_venv/lib/python3.6/site-packages/flask/app.py", line 1512, in handle_user_exception
return self.handle_http_exception(e)
File "/ops_venv/lib/python3.6/site-packages/flask/app.py", line 1471, in handle_http_exception
return handler(e)
File "/deploy/app/openpoiservice/server/__init__.py", line 82, in page_not_found
return jsonify({"error_message": 404})
File "/ops_venv/lib/python3.6/site-packages/flask/json.py", line 251, in jsonify
if current_app.config['JSONIFY_PRETTYPRINT_REGULAR'] and not request.is_xhr:
File "/ops_venv/lib/python3.6/site-packages/werkzeug/local.py", line 347, in __getattr__
return getattr(self._get_current_object(), name)
AttributeError: 'Request' object has no attribute 'is_xhr'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/ops_venv/lib/python3.6/site-packages/gunicorn/workers/async.py", line 56, in handle
self.handle_request(listener_name, req, client, addr)
File "/ops_venv/lib/python3.6/site-packages/gunicorn/workers/ggevent.py", line 152, in handle_request
super(GeventWorker, self).handle_request(*args)
File "/ops_venv/lib/python3.6/site-packages/gunicorn/workers/async.py", line 107, in handle_request
respiter = self.wsgi(environ, resp.start_response)
File "/ops_venv/lib/python3.6/site-packages/flask/app.py", line 1997, in __call__
return self.wsgi_app(environ, start_response)
File "/ops_venv/lib/python3.6/site-packages/flask/app.py", line 1985, in wsgi_app
response = self.handle_exception(e)
File "/ops_venv/lib/python3.6/site-packages/flask_cors/extension.py", line 161, in wrapped_function
return cors_after_request(app.make_response(f(*args, **kwargs)))
File "/ops_venv/lib/python3.6/site-packages/flask/app.py", line 1547, in handle_exception
return self.finalize_request(handler(e), from_error_handler=True)
File "/deploy/app/openpoiservice/server/__init__.py", line 86, in server_error_page
return jsonify({"error_message": 500})
File "/ops_venv/lib/python3.6/site-packages/flask/json.py", line 251, in jsonify
if current_app.config['JSONIFY_PRETTYPRINT_REGULAR'] and not request.is_xhr:
File "/ops_venv/lib/python3.6/site-packages/werkzeug/local.py", line 347, in __getattr__
return getattr(self._get_current_object(), name)
AttributeError: 'Request' object has no attribute 'is_xhr'
Can you try your request on a local scope ?
@zephylac need to install it on local machine. I don’t think it will be fast, maybe only tomorrow. By the way, when I tested locally, I remember I had the same errors in the logs.
Can you share your docker-compose.yml
if you are using docker-compose
Well, you do
ports:
- "8080:8080"
which opens port 8080 and you request port 5000 in your example, but even worse you map to the wrong port within the Docker container. If you want port 8080 to be open on your server instead of 5000, then do
ports:
- "8080:5000"
In your ports 8080:8080
. You don't want to change the right hand side part.
hihi, sorry @zephylac
@zephylac wow, thank you. So i need to rebuild all?
No, you don't need to. Just start a new container.
Sorry, do docker-compose down
, then docker-compose up -d
again, that should be enough
@zephylac wait, no, i changed bind port in gunicorn to this:
bind = "0.0.0.0:8080"
And docker ps:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3a3b3958b001 openpoiservice_gunicorn_flask "/ops_venv/bin/gunic…" 7 days ago Up 7 days 0.0.0.0:8080->8080/tcp openpoiservice_gunicorn_flask_1
Sorry i just forgot this.
@zephylac @nilsnolde do i need to open new issue?
Then try this command : curl -X POST http://localhost:6000/pois -H 'content-type: application/json' -d '{"request": "list"}'
@zephylac
ivan@poi-api:~$ curl -X POST http://127.0.0.1:8080/pois -H 'content-type: application/json' -d '{"request": "list"}'
{"accomodation": {"id": 100, "children": {"tourism": {"alpine_hut": 101, "apartment": 102, "camp_site": 103, "caravan_site": 104, "chalet": 105, "guest_house": 106, "hostel": 107, "hotel": 108, "motel": 109, "wilderness_hut": 110}}}, "animals": {"id": 120, "children": {"amenity": {"animal_boarding": 121, "animal_shelter": 122, "veterinary": 123}, "shop": {"pet": 124}}}, "arts_and_culture": {"id": 130, "children": {"amenity": {"arts_centre": 131, "library": 133, "place_of_worship": 135, "studio": 136}, "tourism": {"gallery": 132, "museum": 134}}}, "education": {"id": 150, "children": {"amenity": {"college": 151, "driving_school": 152, "kindergarten": 153, "language_school": 154, "music_school": 155, "school": 156, "university": 157}}}, "facilities": {"id": 160, "children": {"amenity": {"compressed_air": 161, "bench": 162, "emergency_phone": 163, "clock": 164, "drinking_water": 166, "hunting_stand": 168, "internet_cafe": 169, "kneipp_water_cure": 170, "post_box": 171, "recycling": 172, "sanitary_dump_station": 174, "shelter": 175, "shower": 176, "table": 177, "telephone": 178, "toilets": 179, "waste_basket": 180, "waste_disposal": 181, "water_point": 182}, "emergency": {"access_point": 205, "defibrillator": 165, "fire_hydrant": 167}}}, "financial": {"id": 190, "children": {"amenity": {"atm": 191, "bank": 192, "bureau_de_change": 193}}}, "healthcare": {"id": 200, "children": {"amenity": {"baby_hatch": 201, "clinic": 202, "dentist": 203, "doctors": 204, "hospital": 206, "nursing_home": 207, "pharmacy": 208, "retirement_home": 209, "social_facility": 210}, "healthcare": {"blood_donation": 211}}}, "historic": {"id": 220, "children": {"historic": {"aircraft": 221, "aqueduct": 222, "archaeological_site": 223, "castle": 224, "cannon": 225, "city_gate": 226, "citywalls": 227, "battlefield": 228, "boundary_stone": 229, "building": 230, "farm": 231, "fort": 232, "gallows": 233, "highwater_mark": 234, "locomotive": 235, "manor": 236, "memorial": 237, "milestone": 238, "monastery": 239, "monument": 240, "optical_telegraph": 241, "pillory": 242, "ruins": 243, "rune_stone": 244, "ship": 245, "tomb": 246, "wayside_cross": 247, "wayside_shrine": 248, "wreck": 249}}}, "leisure_and_entertainment": {"id": 260, "children": {"leisure": {"adult_gaming_centre": 261, "amusement_arcade": 262, "beach_resort": 263, "bandstand": 264, "bird_hide": 265, "common": 266, "dance": 267, "dog_park": 268, "firepit": 269, "fishing": 270, "fitness_centre": 271, "garden": 272, "golf_course": 273, "hackerspace": 274, "horse_riding": 275, "ice_rink": 276, "marina": 277, "miniature_golf": 278, "nature_reserve": 279, "park": 280, "picnic_table": 281, "pitch": 282, "playground": 283, "sauna": 286, "slipway": 287, "sports_centre": 288, "stadium": 289, "summer_camp": 290, "swimming_area": 291, "swimming_pool": 292, "track": 293, "turkish_bath": 294, "water_park": 295, "wildlife_hide": 296}, "highway": {"raceway": 284}, "amenity": {"brothel": 297, "casino": 298, "cinema": 299, "dive_centre": 300, "dojo": 301, "gambling": 302, "nightclub": 303, "planetarium": 304, "public_bath": 285, "social_centre": 305, "spa": 306, "stripclub": 307}, "tourism": {"aquarium": 308, "theme_park": 309, "zoo": 310}}}, "natural": {"id": 330, "children": {"natural": {"cave_entrance": 331, "beach": 332, "geyser": 333, "peak": 335, "rock": 336, "saddle": 337, "spring": 338, "volcano": 339, "water": 340}}}, "public_places": {"id": 360, "children": {"amenity": {"embassy": 361, "crematorium": 362, "community_centre": 363, "courthouse": 364, "coworking_space": 365, "crypt": 366, "fire_station": 367, "grave_yard": 368, "police": 369, "post_office": 370, "prison": 371, "ranger_station": 372, "rescue_station": 373, "townhall": 374}}}, "service": {"id": 390, "children": {"shop": {"beauty": 391, "estate_agent": 392, "dry_cleaning": 393, "glaziery": 394, "hairdresser": 395, "laundry": 396, "massage": 397, "tailor": 399, "tattoo": 400}, "amenity": {"photo_booth": 398}}}, "shops": {"id": 420, "children": {"shop": {"agrarian": 421, "alcohol": 422, "antiques": 423, "art": 424, "bag": 425, "bakery": 426, "bed": 427, "beverages": 428, "bicycle": 429, "books": 430, "boutique": 431, "brewing_supplies": 432, "business_machines": 433, "butcher": 434, "cafe": 435, "camera": 436, "candles": 437, "car": 438, "car_parts": 439, "carpet": 440, "curtain": 441, "cheese": 442, "chemist": 443, "chocolate": 444, "clothes": 447, "coffee": 448, "computer": 449, "confectionery": 450, "convenience": 451, "copyshop": 452, "cosmetics": 453, "dairy": 454, "deli": 455, "department_store": 456, "doityourself": 457, "electrical": 458, "electronics": 459, "erotic": 460, "e-cigarette": 461, "farm": 462, "fashion": 463, "fishing": 464, "florist": 465, "funeral_directors": 466, "furniture": 467, "games": 468, "garden_centre": 469, "garden_furniture": 470, "gas": 471, "general": 472, "gift": 473, "greengrocer": 474, "grocery": 475, "interior_decoration": 476, "hairdresser_supply": 477, "hardware": 478, "hearing_aids": 479, "herbalist": 480, "hifi": 481, "houseware": 482, "hunting": 483, "insurance": 484, "jewelry": 485, "leather": 486, "locksmith": 487, "kiosk": 488, "kitchen": 489, "lamps": 490, "lottery": 491, "mall": 492, "medical_supply": 494, "mobile_phone": 495, "model": 496, "motorcycle": 497, "music": 498, "musical_instrument": 499, "nutrition_supplements": 500, "newsagent": 501, "optician": 502, "organic": 503, "outdoor": 504, "paint": 505, "pastry": 506, "perfumery": 507, "photo": 508, "pyrotechnics": 509, "radiotechnics": 510, "seafood": 511, "second_hand": 512, "security": 513, "shoes": 514, "spices": 515, "sports": 516, "stationery": 517, "supermarket": 518, "swimming_pool": 519, "tea": 520, "ticket": 521, "tiles": 522, "tobacco": 523, "toys": 524, "trophy": 525, "tyres": 526, "variety_store": 527, "video": 529, "video_games": 530, "watches": 531, "weapons": 532, "wine": 533}, "amenity": {"marketplace": 493, "vending_machine": 528}}}, "sustenance": {"id": 560, "children": {"amenity": {"bar": 561, "bbq": 562, "biergarten": 563, "cafe": 564, "drinking_water": 565, "fast_food": 566, "food_court": 567, "ice_cream": 568, "pub": 569, "restaurant": 570}}}, "transport": {"id": 580, "children": {"aeroway": {"aerodrome": 581, "helipad": 598, "heliport": 599}, "amenity": {"bicycle_parking": 583, "bicycle_rental": 584, "bicycle_repair_station": 585, "boat_sharing": 586, "bus_station": 587, "bus_stop": 588, "car_rental": 589, "car_repair": 590, "car_sharing": 591, "car_wash": 592, "charging_station": 593, "ev_charging": 594, "ferry_terminal": 595, "fuel": 596, "motorcycle_parking": 600, "parking": 601, "parking_entrance": 602, "parking_space": 603, "taxi": 606}, "railway": {"halt": 597, "station": 604, "tram_stop": 605}, "public_transport": {"platform": 607, "stop_position": 608, "stop_area": 609, "station": 610}}}, "tourism": {"id": 620, "children": {"tourism": {"artwork": 621, "attraction": 622, "information": 624, "picnic_site": 625, "viewpoint": 627}, "amenity": {"fountain": 623}, "shop": {"travel_agency": 626}}}}
Can ytou run those 2 commands
docker exec -it openpoiservice_gunicorn_flask_1 /ops_venv/bin/activate;pip show Flask
docker exec -it openpoiservice_gunicorn_flask_1 /ops_venv/bin/activate;pip show Werkzeug
@zephylac
OCI runtime exec failed: exec failed: container_linux.go:346: starting container process caused "exec: \"/ops_venv/bin/activate\": permission denied": unknown
Command 'pip' not found, but can be installed with:
sudo apt install python-pip
And this ? docker exec -it openpoiservice_gunicorn_flask_1 /ops_venv/bin/pip3 show Flask Werkzeug
@zephylac
Name: Flask
Version: 0.12.2
Summary: A microframework based on Werkzeug, Jinja2 and good intentions
Home-page: http://github.com/pallets/flask/
Author: Armin Ronacher
Author-email: armin.ronacher@active-4.com
License: BSD
Location: /ops_venv/lib/python3.6/site-packages
Requires: Werkzeug, itsdangerous, click, Jinja2
Required-by: Flask-Testing, Flask-SQLAlchemy, Flask-DebugToolbar, Flask-Cors, flasgger
---
Name: Werkzeug
Version: 1.0.0
Summary: The comprehensive WSGI web application library.
Home-page: https://palletsprojects.com/p/werkzeug/
Author: Armin Ronacher
Author-email: armin.ronacher@active-4.com
License: BSD-3-Clause
Location: /ops_venv/lib/python3.6/site-packages
Requires:
Required-by: Flask, Flask-DebugToolbar
Yeah so that's coming from Werkzeug. It has received a major update. Before that we were on 0.15.5
.
@TimMcCauley @nilsnolde What do you guys wanna do ? I guess we should update to support the new version of Werkzeug
? It seems that only switching to Flask 1.0.0
fix this issue.
@zephylac is it possible to add a correct version of Werkzeug into requirements.txt? I mean if I add Werkzeug==0.15.5
it will not be replaced by a current version from the flask?
@kshnkvn it will work yes. But if they release a new version, they must have fixed issues. I mean It's better practice to support this critical package rather than freezing it.
@zephylac yes, with 0.15.5 all works. Thank you.
Yeah, I guess we should update it at some point. For now, we can pin the Werkzeug
version I'd say. I'm VERY surprised Flask has no proper version pinning and start installing incompatible packages, which is exactly what libraries should avoid. And yep: current Flask master installs "Werkzeug>=0.15"
, so that's where our problem's coming from. But that also tells us that there is no critical update and 0.15.5
should be totally OK to use. I'll provide a PR to fix it.
Is that ok with you @zephylac ?
Now, the weird thing is: I recently built a new Docker container for ops with the "old" requirements.txt and just checked: also has Werkzeug 1.0.0 and I can request all resources..
I'll trying to make simple request:
But all time i'll got status 500 and:
Is it wrong bbox, or error with openpoiservice? How i can check it?