2016-11-24 20 views
1

Google App EngineのプロジェクトにSalesforce Bulk APIを使用する予定です。私は、Python salesforce-bulk-apiライブラリを介して、バルクAPIを使用して2つのタスクを作成するために、いくつかの簡単なテストコードを書き始めました:期待と2つのタスクはSalesforceで表示されるローカルにこのコードを実行するSalesforce Bulk API:Google App Engineで実行するとInvalidSessionId(セッションIDを見つけることができません)

from salesforce_bulk_api import SalesforceBulkJob 

header = ['WhoId', 'Subject'] 
messages = [('[...]', 'Test Task 1'), 
      ('[...]', 'Test Task 2')] 

os.environ['SALESFORCE_INSTANCE'] = '[...]' 
os.environ['SALESFORCE_SECURITY_TOKEN'] = access_token 

job = SalesforceBulkJob('insert', 'Task') 
job.upload(
    header, 
    messages 
) 

results = job.results() 
for r in results: 
    print('Result ' + str(r)) 

で動作します。しかし、Google App Engineでコードを実行すると失敗します。仕事/バッチの詳細は以下のとおりです。私は、ドキュメントに表示されるものと

<error xmlns="http://www.force.com/2009/06/asyncapi/dataload"> 
<script/> 
    <exceptionCode>InvalidSessionId</exceptionCode> 
    <exceptionMessage>Unable to find session id</exceptionMessage> 
</error> 

は、セッションIDは、ヘッダフィールドX-SFDC-Sessionたび経由して送信する必要があります。私はそれを確認して、それはローカルで実行するときだけでなく、Google App Engine経由でも設定されます。次のようなヘッダー:

{ 'Content-Length': '183', 
    'Accept-Encoding': 'gzip, deflate', 
    'Accept': '*/*', 
    'User-Agent': 'python-requests/2.9.1', 
    'X-SFDC-Session': u'[...]', 
    'Connection': 'keep-alive', 
    'Content-Type': u'application/xml; charset=UTF-8'} 

この問題をデバッグ/解決する方法のヒントをご存知の方は、ありがとう!

- Manfred

+0

これは引き続き問題ですか? [プロジェクトの問題追跡担当者に報告する]価値があるかもしれません(https://github.com/safarijv/salesforce-bulk-api/issues)。ユニコードに言及した[プルリクエスト](https://github.com/safarijv/salesforce-bulk-api/pull/4)がありますが、これがあなたの問題を解決するかどうかは不明です。 – Adam

+0

あなたはこれを決心しましたか? – NSjonas

答えて

0

おそらく、これは基本となるライブラリの問題です。あなたのエラーでは、u'[...]'が見えることに注意してください。単純な文字列のように見えます。ライブラリのローカルのバージョンで

は、ライン212上のsalesforce_bulk_api.pyで、次の行を見つけます:

headers = {'X-SFDC-Session': self.session_id} 

をし、に変更します。

headers = {'X-SFDC-Session': str(self.session_id)} 

、アプリケーションを再デプロイして、再試行してください。これにより問題が解決された場合は、そのライブラリを編集するプル要求を送信して修正プログラムを含めることを検討してください。

ローカル開発環境は単なるエミュレータであり、実際のApp Engine環境と大きく異なる可能性があり、ローカルマシンごとに大きく異なる場合もあります。多くの企業は、アプリケーションを最初に「ステージング」プロジェクトに展開してから、そのプロダクションプロジェクトに変更を反映させます。

+0

良いキャッチ。残念ながら、これは違いはありません。 私は重要な違いがあることを認識しています。そのため、GAEでもステージングプロジェクトを使用しています。しかし、今回は、問題点や相違点を追跡するのに苦労しています。 –

関連する問題