Closed fuzunspm closed 6 years ago
I have been facing a similar issue with basic queries.
Here's what my function looks like:
def getTaskAppCount(Object):
myClassName = "EarnNowTaskApplication"
myClass = Object.factory(myClassName)
all_scores = myClass.Query.all()
print(type(all_scores))
for score in all_scores:
# do something
return someValue
The function fails with:
if _is_illegal_header_value(values[i]):
TypeError: expected string or bytes-like object
What am I doing wrong?
Hey guys @Dhanesh95 @fuzunspm
Sorry I've really dropped the ball on this project. I inherited it from the previous maintained because he didn't use it / have time for it anymore, and now I'm in the same position! Embarrassing, I'm sorry.
Since parse-server has been open sourced, there has been a lot of changes to it. It might make sense to start a fresh project targeting latest python3 / asyncio and the latest parse.
That said, I am unable to reproduce these bugs. I tried in both python3 (3.6) and python2. I'm running against parse-server 2.7.1.
Could you please put together a single file that reproduces the bug and paste it here? And let me know exactly which versions of Python and parse-server you are running.
Googling for this "is_illegal_header_value" turns up some other projects having issues with Python 3.5+ related to \n
in header values: https://github.com/evernote/evernote-sdk-python3/issues/16 which stems from a fix to https://bugs.python.org/issue22928
But I don't see anywhere in this project that is inserting \n
into header values (at least at a quick glance). And as I said I cannot reproduce this bug. Are you sure you are not including a newline somewhere? Perhaps in some of your environment variables used to configure parse?
Are you running on windows?
I tried reproducing this in a bunch of scenarios:
(One thing -- I am running parse_server behind nginx, and not so easy for me to change that in my current setup. Maybe this is the issue, idk.)
Unable to reproduce. Here is the code I'm using:
Logged in user:
import os
os.environ["PARSE_API_ROOT"] = "http://localhost:9595/api/parse"
from parse_rest.datatypes import Function, Object, GeoPoint, File
from parse_rest.connection import register
from parse_rest.query import QueryResourceDoesNotExist
from parse_rest.connection import ParseBatcher
from parse_rest.connection import SessionToken
from parse_rest.core import ResourceRequestBadRequest, ParseError
from parse_rest.user import User
from parse_rest.connection import SessionToken, register
from pprint import pprint
APPLICATION_ID = 'appID'
REST_API_KEY = 'restAPIKey'
register(APPLICATION_ID, REST_API_KEY)
class Fund(Object):
pass
u = User.login('gary.chalmers@springfield.com', 'test')
print(u.sessionToken)
with SessionToken(u.sessionToken):
funds = Fund.Query.all()
for fund in funds:
print(fund)
fund2 = Fund(fundName='test name')
fund2.save()
Master key:
import os
os.environ["PARSE_API_ROOT"] = "http://localhost:9595/api/parse"
from parse_rest.datatypes import Function, Object, GeoPoint, File
from parse_rest.connection import register
from parse_rest.query import QueryResourceDoesNotExist
from parse_rest.connection import ParseBatcher
from parse_rest.connection import SessionToken
from parse_rest.core import ResourceRequestBadRequest, ParseError
from parse_rest.user import User
from parse_rest.connection import SessionToken, register
from pprint import pprint
APPLICATION_ID = 'appID'
REST_API_KEY = 'restAPIKey'
MASTER_KEY = 'masterKey'
register(APPLICATION_ID, REST_API_KEY, master_key=MASTER_KEY)
class Fund(Object):
pass
funds = Fund.Query.all()
for fund in funds:
print(fund)
fund2 = Fund(fundName='test name')
fund2.save()
Bunch more info here: https://www.google.com/search?q=%22_is_illegal_header_value%22
@milesrichardson Thanks a ton for your quick response!
It works now. Turns out it was an incorrect environment variable. Sorry for the false alarm!
I was extremely happy to find out about this project today and I'm sorry to hear that you have dropped the ball. Thanks a lot for your efforts.
It still works for 99% of use cases as far as I know. I wouldn't be scared to use it. I'm also happy to review any PRs for bugs you encounter. Just don't have time to add new features.
I'm getting error of:
I can't follow documentation could you please help me to fix it?