OP_RETURN using python I'm trying to make a simple program that can reliably upload an OP_RETURN transaction. I have found some examples online, but so far they don't work consistently. The ones that go through seem to be random. Here are the transactions that went through 

https://blockchain.info/address/1Eoo7G7u97EMwptSxjYjpvdx9zYcqJBn9y

It is very hit or miss every time I try. I have been entirely unable to upload any transactions using the script, however once in a while if I upload the raw transaction using blockchain they go through. Any ideas? Here is the error message. 

Traceback (most recent call last):
  File "/Users/JC/Documents/DevelopmentStuff/programming /Python/bit/op-return_test2.py", line 51, in &lt;module&gt;
    print(pushtx(tx))
  File "/Library/Python/2.7/site-packages/bitcoin/bci.py", line 237, in pushtx
    return f(*args)
  File "/Library/Python/2.7/site-packages/bitcoin/bci.py", line 192, in bci_pushtx
    return make_request('https://blockchain.info/pushtx', 'tx='+tx)
  File "/Library/Python/2.7/site-packages/bitcoin/bci.py", line 23, in make_request
    raise Exception(p)
Exception: None Standard Script Output OP_RETURN 48656c6c6f


Here is the code. I would really appreciate any help. Thanks

# coding: utf-8

from bitcoin import *
import binascii
from test import *



priv = "Private key"

pub = "1Eoo7G7u97EMwptSxjYjpvdx9zYcqJBn9y"

addr= "1Eoo7G7u97EMwptSxjYjpvdx9zYcqJBn9y"
inputs = unspent(addr)

message = "Hello"
FullLen = format(len(message)+2,'x').rjust(2,'0') 
MessageLen = format(len(message),'x').rjust(2,'0')
ID = binascii.hexlify(str(message))
#snd = "6a4c28"+ID
snd = "6a"+MessageLen+ID
print hexlify(chr(len(message)))
print MessageLen
print snd
#snd = "6a4c"+MessageLen+ID
#print snd
newScriptPubKey = "6a" + hexlify(chr(len(message)))+ hexlify(message)
#print newScriptPubKey

outputs = [{'value': 50000, 'address': addr}, {'value': 0, 'script': snd}]

fee = 10000

tx = mksend(inputs, outputs, addr, fee)

dt = deserialize(tx)
ins = dt['ins']

#print addr
#print ins

print tx
for ind, elm in enumerate(ins):
    print elm
    tx = sign(tx, ind, priv)

print tx



print(pushtx(tx)) # Error is raised on this line
From e90acad12b19d7b9a4760a5af4603a9da06e6231e699072bcb71aced795abd62:

deserialize(str(blockr_fetchtx("e90acad12b19d7b9a4760a5af4603a9da06e6231e699072bcb71aced795abd62")))

{'ins': [{'outpoint': {'hash': 'a5221ad4b031d9487dfb2c334b3d84a3c33d908e5f1089141a72b2f4c98baf55',
    'index': 0},
   'script': '483045022100e684df2de15562b09f267d6ec25a1f8043e0162fb7426e40ee87a1a0b51a4ab8022009069aced5a4a33ac720dbbafad37b36e1
087ea9578b1ec9cd14ea4367debc0f01410466c719272fda4368a44cde914dd210b3dcf1913b700b1fdd2948f6d44acb404c250d172705bd297d9a3fcc4ddb9e
0d3fe2c52b870e31eb035f650921bd68d73c',
   'sequence': 4294967295L},
  {'outpoint': {'hash': 'a5221ad4b031d9487dfb2c334b3d84a3c33d908e5f1089141a72b2f4c98baf55',
    'index': 2},
   'script': '483045022008e0edd19548f7098db140d703fd60e00b184c7d4746da57fdb36f5ff573bc080221008203612b6bf02e9e15bde7e412085323e4
d561761ddc2632f5f68a0dc057aebd01410466c719272fda4368a44cde914dd210b3dcf1913b700b1fdd2948f6d44acb404c250d172705bd297d9a3fcc4ddb9e
0d3fe2c52b870e31eb035f650921bd68d73c',
   'sequence': 4294967295L}],
 'locktime': 0,
 'outs': [{'script': '76a91497734226bd4c9c7764771a077e775e8581e030e988ac',
   'value': 50000},
  {'script': '6a4c0848656c6c6f526179', 'value': 0},
  {'script': '76a91497734226bd4c9c7764771a077e775e8581e030e988ac',
   'value': 210477}],
 'version': 1}


{'script': '6a4c0848656c6c6f526179', 'value': 0}

That OP_RETURN is Non-Standard, which is the error message BCI is throwing. It's the 4c preceding 6a that's the issue: if a push data code is not needed, then the Tx is non-standard. It should just read 6a48656c6c6f526179, or in the serialized Tx it'd be 096a48656c6c6f526179 instead of 0b6a4c0848656c6c6f526179.